
🔗 Jak dodać link do strony głównej w menu WordPress
Menu nawigacji bez odnośnika do strony głównej jest jak drzwi wejściowe bez klamki. Odwiedzający trafia na podstronę przez wyszukiwarkę, czyta materiał... i nie rozumie, gdzie kliknąć, aby przejść na stronę główną. Logo w nagłówku nie zawsze ratuje sytuację, część użytkowników instynktownie szuka pozycji „Strona główna" właśnie w menu.
Do wersji 3.0 WordPress nie miał takiej opcji w standardowym edytorze menu, trzeba było albo poprawiać kod, albo dodawać dowolny odnośnik ręcznie. Teraz wszystko jest prostsze: kilka kliknięć i odnośnik do strony głównej jest na swoim miejscu. A jeśli jest Pan programistą lub dostosowuje Pan motyw, dostępny jest filtr wp_nav_menu_items, który rozwiązuje zadanie jedną funkcją.
Poniżej oba sposoby: wizualny dla zwykłego użytkownika i programistyczny dla osób pracujących z kodem. Dodatkowo omówimy, kiedy odnośnik wymaga aktualizacji i co zrobić, jeśli nagle zniknie.
💡 Szybki przegląd:
- Dodanie odnośnika do strony głównej w menu WordPress przez panel administracyjny w minutę, bez wtyczek.
- Dodanie odnośnika programowo przez filtr wp_nav_menu_items w pliku functions.php motywu.
- Sprawdzenie i aktualizacja URL po zmianie domeny lub przejściu na HTTPS.
Sposób 1: przez panel administracyjny WordPress
Ta metoda działa z WordPress 3.0 i nowszymi, czyli na każdej współczesnej witrynie. Nie są potrzebne żadne wtyczki ani poprawki w kodzie.
Proszę zalogować się do panelu administracyjnego i przejść ścieżką „Wygląd" → „Menu". Po lewej stronie zobaczy Pan bloki: „Strony", „Wpisy", „Dowolne odnośniki" i inne, w zależności od zainstalowanych wtyczek i typów treści.
W bloku „Strony" proszę kliknąć zakładkę „Wszystkie" (lub „Wyświetl wszystkie" w starszych wersjach). W pierwszym wierszu znajduje się strona o nazwie „Strona główna" (lub „Home", jeśli ma Pan wersję angielską). Proszę zaznaczyć ją checkboxem i kliknąć przycisk „Dodaj do menu".

Po dodaniu pozycja pojawi się w strukturze menu po prawej stronie. Proszę przeciągnąć ją na żądaną pozycję, zwykle umieszcza się ją jako pierwszy lub ostatni element. Proszę zapisać menu przyciskiem „Zapisz menu", a odnośnik do strony głównej zacznie działać na witrynie.
WordPress domyślnie używa dla tej pozycji bezpośredniego URL strony głównej (na przykład https://vash-sait.ru/). Warto o tym pamiętać: jeśli później przeniesie Pan witrynę na inną domenę lub przełączy się Pan z HTTP na HTTPS, odnośnik pozostanie stary. Trzeba będzie wejść do edytora menu i poprawić URL ręcznie lub usunąć pozycję i dodać ją ponownie (WordPress sam wstawi aktualny adres).
Sposób 2: programowe dodanie przez filtr
Jeśli tworzy Pan niestandardowy motyw lub chce Pan, aby odnośnik do strony głównej był dodawany automatycznie podczas aktywacji motywu, proszę użyć filtra wp_nav_menu_items. Przechwytuje on kod HTML pozycji menu przed wyświetleniem i umożliwia wstawienie własnego elementu.
Kod umieszcza się w pliku functions.php aktywnego motywu (lub motywu potomnego, aby nie stracić poprawek podczas aktualizacji). Alternatywną opcją jest wtyczka Code Snippets: tworzy Pan snippet, wkleja kod i aktywuje, poprawki nie zależą od motywu.

1 /** 2 * Добавляет ссылку «Главная» в основное меню WordPress. 3 * 4 * @param string $items HTML-разметка пунктов меню. 5 * @param object $args Аргументы wp_nav_menu(). 6 * @return string 7 */ 8 function sdstudio_add_menu_home_link( $items, $args ) { 9 // Целевая область меню — замените 'main' на своё значение 10 if ( 'main' !== $args->theme_location ) { 11 return $items; 12 } 13 14 $home_link = sprintf( 15 '<li class="menu-item"><a href="%s">%s</a></li>', 16 esc_url( home_url( '/' ) ), 17 esc_html__( 'Главная', 'textdomain' ) 18 ); 19 20 // Ссылка добавляется первой — поставьте $items . $home_link, если нужна последней 21 $items = $home_link . $items; 22 23 return $items; 24 } 25 add_filter( 'wp_nav_menu_items', 'sdstudio_add_menu_home_link', 10, 2 );
Kluczowym parametrem jest 'main' w warunku if. To slug obszaru menu (theme location), który jest rejestrowany funkcją register_nav_menu() w motywie. Swój slug może Pan sprawdzić w pliku functions.php motywu: proszę znaleźć wywołanie register_nav_menu() lub register_nav_menus() i spojrzeć na pierwszy argument. Najczęściej jest to primary lub main.
Funkcja jest bezpieczna: esc_url() ekranuje URL, a esc_html__() obsługuje tekst odnośnika z obsługą tłumaczenia. Jeśli używa Pan motywu potomnego, proszę zastąpić 'textdomain' domeną tekstową swojego motywu.
Po wstawieniu kodu proszę odświeżyć witrynę, odnośnik do strony głównej pojawi się w menu automatycznie. Nie trzeba go ręcznie usuwać: wystarczy zakomentować lub usunąć add_filter(), a wszystko wróci do stanu początkowego.
Sytuacje, w których odnośnik wymaga aktualizacji
Odnośnik do strony głównej dodany przez panel administracyjny przechowuje sztywny URL, ten, który był w ustawieniach witryny w momencie dodawania. Trzy typowe scenariusze, w których się psuje:
Przejście z HTTP na HTTPS. Pozycja menu nadal prowadzi na
http://..., przeglądarki mogą pokazać ostrzeżenie o mieszanej treści lub przekierowanie się zepsuje. Rozwiązanie: proszę wejść do edytora menu, usunąć starą pozycję „Strona główna" i dodać ją ponownie, WordPress wstawi aktualny adres URLhttps://.Zmiana domeny. W przypadku przeniesienia witryny ze środowiska deweloperskiego na produkcyjne (
staging.site.ru→site.ru) lub całkowitej przeprowadzki na nową domenę. Pozycja menu przechowuje stary URL. Rozwiązanie jest takie samo: usunąć i dodać ponownie.Przeniesienie z podkatalogu do katalogu głównego. Jeśli witryna przenosi się z
site.ru/blog/dosite.ru/, wszystkie sztywne odnośniki się psują. Po przeniesieniu proszę przejrzeć WSZYSTKIE pozycje menu, nie tylko odnośnik do strony głównej.
Sposób programistyczny (przez wp_nav_menu_items) jest wolny od tych problemów: home_url('/') zawsze zwraca aktualny adres strony głównej z ustawień WordPress.
Przy okazji, jeśli aktywnie pracuje Pan z menu, proszę zajrzeć do ustawień nawigacji w sekcji „Wygląd" → „Dostosuj", można tam zarządzać menu w czasie rzeczywistym z podglądem. A do zaawansowanych poprawek (dodawanie ikon do pozycji, megamenu) potrzebne będą osobne narzędzia, ale to już temat na inny materiał.
Wideo: dodawanie przycisku strony głównej w 2 minuty
Jeśli wygodniej jest Panu oglądać niż czytać, oto krótkie anglojęzyczne wideo z prezentacją ekranu krok po kroku:
⁉️🤔 Często zadawane pytania
Czy można dodać odnośnik do strony głównej bez wtyczek i kodu?
Tak, przez standardowy edytor menu WordPress: „Wygląd" → „Menu" → blok „Strony" → zaznaczyć „Strona główna" → „Dodaj do menu". To podstawowa funkcjonalność rdzenia, dostępna od wersji 3.0.
Dlaczego po zmianie motywu odnośnik do strony głównej zniknął z menu?
Menu w WordPress są powiązane z obszarami menu (theme locations), które rejestruje motyw. W przypadku zmiany motywu stare obszary znikają, a nowe mogą nazywać się inaczej. Pana menu nigdzie nie zniknęło, po prostu się „odwiązało". Proszę wejść w „Wygląd" → „Menu" → zakładka „Zarządzanie obszarami" i przypisać istniejące menu do obszaru nowego motywu. Wszystkie pozycje, w tym odnośnik do strony głównej, powrócą.
W menu jest już pozycja „Strona główna", ale prowadzi ona na jakąś konkretną podstronę, a nie na stronę główną witryny. Jak to naprawić?
Najprawdopodobniej do menu dodano konkretną stronę o tytule „Strona główna", a nie specjalny typ „Strona główna". Proszę usunąć tę pozycję z menu, następnie w bloku „Strony" znaleźć wpis z oznaczeniem „Strona główna" (WordPress oznacza ją osobno) i dodać ją. Jeśli oznaczenia nie ma, proszę dodać pozycję przez „Dowolne odnośniki": w polu URL wpisać
/, w polu „Tekst odnośnika" wpisać „Strona główna".
Jak dodać odnośnik do strony głównej nie jako pierwszy, ale jako ostatni w menu?
W sposobie programistycznym proszę zmienić kolejność konkatenacji: zamiast
$home_link . $itemsnapisać$items . $home_link. W edytorze wizualnym wystarczy przeciągnąć pozycję „Strona główna" myszą na koniec listy i zapisać menu.
Czy koniecznie trzeba używać esc_url() i home_url() w kodzie?
Tak, to najlepsza praktyka WordPress.
home_url('/')dynamicznie wstawia aktualny adres witryny z ustawień, nie będzie Pan musiał poprawiać kodu w przypadku zmiany domeny.esc_url()ekranuje znaki specjalne i chroni przed atakami XSS. Pomijanie ekranowania w kodzie produkcyjnym jest ryzykowne.
Czy sposób z kodem działa na instalacji multisite WordPress?
Tak,
home_url( '/' )w multisite zwraca URL konkretnej witryny w sieci, ten, który jest wskazany w ustawieniach tej podwitryny. Dla każdej witryny w sieci odnośnik do strony głównej będzie własny. Jeśli potrzebuje Pan różnego zachowania dla różnych witryn, proszę opakowaćadd_filter()w warunek sprawdzający ID bloga przezget_current_blog_id().
Co zrobić, jeśli odnośnik do strony głównej się nie pojawia?
Najpierw proszę sprawdzić rzecz oczywistą: czy na pewno zapisał Pan menu po dodaniu pozycji? Przycisk „Zapisz menu" znajduje się na dole strony, bez niego zmiany nie są stosowane. Jeśli menu jest zapisane, a pozycji nie ma, proszę otworzyć witrynę w trybie incognito (pamięć podręczna przeglądarki czasami ukrywa świeże poprawki).
Drugą prawdopodobną przyczyną jest wtyczka buforująca (WP Rocket, W3 Total Cache, LiteSpeed Cache). Proszę wyczyścić pamięć podręczną przez panel administracyjny wtyczki i sprawdzić witrynę ponownie.
Jeśli to nie pomogło, proszę na minutę przełączyć motyw na standardowy (Twenty Twenty-Five lub Twenty Twenty-Six). Pozycja się pojawiła? Oznacza to, że problem leży w niestandardowym motywie, jego funkcja wp_nav_menu() może być nadpisana z obcięciem filtrów. Proszę sprawdzić wywołanie wp_nav_menu() w szablonie motywu: argument 'items_wrap' nie powinien być pustym ciągiem, a 'fallback_cb' powinno być false tylko wtedy, gdy świadomie wyłącza Pan fallback.
Kod ze „Sposobu 2" przy prawidłowym theme_location działa na każdym motywie, to zabezpieczenie na wypadek, gdyby metoda wizualna z jakiegoś powodu nie zadziałała.
Odnośnik do strony głównej w menu to drobiazg, który pracuje na zaufanie. Odwiedzający, który trafił na podstronę z wyszukiwarki, w ułamku sekundy znajduje drogę do początku witryny i idzie eksplorować dalej. Bez niego część odbiorców po prostu zamknie kartę. Dwie minuty w edytorze menu lub dziesięć linii kodu i ten punkt wejścia już się nie gubi.



