Nie mogę zapisać menu w WordPress – rozwiązanie

Spis treści

Dlaczego menu nie zapisuje się

Menu to kluczowy element nawigacji, bez którego użytkownicy nie mogą sprawnie poruszać się po stronie. Problem z zapisywaniem menu może objawiać się na kilka sposobów – przycisk "Zapisz menu" nie reaguje, zmiany znikają po odświeżeniu, lub pojawia się błąd serwera.

Edytor menu w WordPress to złożony komponent, który wykorzystuje JavaScript do interakcji przeciągnij i upuść oraz PHP do zapisu danych w bazie. Problem może leżeć po stronie serwera (limity PHP, błędy bazy danych) lub przeglądarki (konflikty skryptów).

W tym poradniku pokażę Ci, jak krok po kroku zdiagnozować i rozwiązać problem z zapisywaniem menu. Większość przypadków udaje się naprawić w kilka minut, stosując jedną z opisanych poniżej metod.

Problemy z limitem pamięci PHP

To najczęstsza przyczyna problemów z zapisywaniem menu. Każdy element menu to osobne pole formularza przesyłane do serwera. Im więcej elementów, tym więcej danych musi przetworzyć PHP. Przy domyślnym limicie pamięci 64 MB rozbudowane menu (powyżej 50-60 elementów) może przekroczyć dostępną pamięć.

Objawy niskiego limitu pamięci:

  • Menu zapisuje się poprawnie przy małej liczbie elementów, ale przestaje przy większej
  • Po kliknięciu "Zapisz menu" strona ładuje się długo, po czym pojawia się błąd
  • W logach błędów PHP pojawia się komunikat o wyczerpaniu pamięci

Jak zwiększyć limit pamięci PHP:

Najprostszą metodą jest dodanie odpowiedniej stałej do pliku wp-config.php. Wpisz ją tuż przed linią "To wszystko, przestań edytować!". Jeśli ta metoda nie zadziała, utwórz plik php.ini w głównym katalogu WordPress i dodaj w nim wpis memory_limit. Po zmianie sprawdź efektywny limit w panelu WordPress.

Dodatkowo zwiększ wartość max_input_vars w php.ini – ten parametr kontroluje maksymalną liczbę zmiennych przesyłanych w żądaniu POST. Dla rozbudowanego menu z podstronami wartość 1000 może być niewystarczająca – ustaw 3000.

Konflikty z wtyczkami

Wtyczki modyfikujące panel administracyjny, zarządzanie rolami lub bezpieczeństwo często nieumyślnie blokują funkcję zapisywania menu. Poniżej znajdziesz najczęstszych winowajców.

Wtyczki, które mogą blokować zapis menu:

  • Wtyczki bezpieczeństwa – mogą blokować duże żądania POST do serwera jako potencjalny atak
  • Wtyczki do ról użytkowników – ograniczają uprawnienia, które mogą nie obejmować zapisu menu
  • Wtyczki optymalizacji panelu administracyjnego – modyfikują interfejs edytora menu
  • Wtyczki do mega menu – rozszerzają standardowy edytor menu o dodatkowe pola

Jak znaleźć konfliktową wtyczkę:

Standardowa procedura: wyłącz wszystkie wtyczki, sprawdź, czy menu zaczyna się zapisywać. Jeśli tak, włączaj wtyczki po jednej, testując menu po każdej. Gdy znajdziesz winowajcę, sprawdź jego ustawienia – często problem można rozwiązać przez dodanie wyjątku lub zmianę konfiguracji.

Problemy z motywem

Motyw może deklarować lokalizacje menu i wpływać na to, jak WordPress obsługuje ich zapisywanie. Źle napisany kod motywu może zakłócać proces zapisu.

Sygnały, że winowajcą jest motyw:

  • Menu zapisuje się z domyślnym motywem WordPress, ale nie z Twoim
  • W konsoli przeglądarki (F12) widać błędy JavaScript pochodzące z plików motywu
  • Motyw deklaruje bardzo wiele lokalizacji menu (więcej niż 10-15)

Jak rozwiązać problemy z motywem:

Tymczasowo włącz domyślny motyw WordPress i sprawdź, czy menu się zapisuje. Jeśli tak, Twój motyw wymaga aktualizacji lub naprawy. Sprawdź w pliku functions.php, czy funkcja register_nav_menus nie jest wywoływana wielokrotnie z tą samą lokalizacją. Jeśli używasz motywu potomnego, usuń z niego deklaracje menu i pozwól motywowi nadrzędnemu obsługiwać rejestrację.

Jeśli interesuje Cię rozwiązywanie ogólnych problemów z zapisywaniem zmian w WordPress, polecam przeczytać artykuł: Strona WordPress nie zapisuje zmian – najczęstsze przyczyny, gdzie znajdziesz szerszą diagnostykę problemów z zapisem w całym WordPressie.

Błędy w bazie danych

Menu w WordPress jest przechowywane jako taksonomia. Błędy w tabelach związanych z taksonomią mogą uniemożliwiać tworzenie nowych elementów menu lub zapisywanie zmian w istniejących.

Objawy problemów z bazą danych:

  • Można tworzyć nowe menu, ale nie można dodawać do nich elementów
  • Elementy menu znikają po odświeżeniu strony
  • Pojawia się błąd "Nie można wstawić terminu do bazy danych"

Jak naprawić bazę danych:

W pliku wp-config.php możesz włączyć tryb naprawy bazy danych. Po zalogowaniu do panelu administracyjnego przejdź pod wskazany adres URL i wybierz tabele do naprawy: wp_terms, wp_term_taxonomy, wp_term_relationships i wp_termmeta. Przed naprawą zawsze zrób kopię zapasową.

Jeśli naprawa nie pomoże, przejdź do phpMyAdmin i sprawdź, czy struktura tych tabel odpowiada domyślnej strukturze WordPress. Nieprawidłowe indeksy lub brakujące kolumny mogą być skutkiem niekompletnej aktualizacji lub działań wtyczek.

Problemy z uprawnieniami

WordPress korzysta z systemu ról i uprawnień, który określa, co każdy użytkownik może robić. Jeśli Twoje konto administratora nie ma pełnych uprawnień – na przykład po migracji strony lub po użyciu wtyczki do zarządzania rolami – możesz nie móc zapisywać menu.

Jak sprawdzić uprawnienia:

  • Sprawdź swoją rolę – przejdź do "Użytkownicy → Twój profil" i upewnij się, że Twoja rola to Administrator
  • Sprawdź prefiks tabel – niektóre wtyczki zmieniają prefix podczas migracji, co może powodować problemy
  • Sprawdź możliwości roli (capabilities) – wtyczki do zarządzania rolami mogą przypadkowo usunąć uprawnienie "edit_theme_options" administratorom

Jak przywrócić uprawnienia:

Utwórz nowe konto administratora i zaloguj się na nie. Jeśli menu działa na nowym koncie, Twoje stare konto ma uszkodzone uprawnienia. Możesz je naprawić za pomocą wtyczki do zarządzania rolami, która pozwala zresetować uprawnienia do domyślnych wartości.

Problemy z JavaScript

Edytor menu WordPress w dużej mierze opiera się na JavaScripcie – przeciąganie elementów, rozwijanie sekcji i zapisywanie to wszystko operacje wykonywane w przeglądarce. Błędy JavaScript mogą sprawić, że przycisk "Zapisz menu" w ogóle nie zadziała.

Jak zdiagnozować błędy JavaScript:

Otwórz narzędzia deweloperskie przeglądarki (klawisz F12) i przejdź do zakładki "Console". Następnie wejdź na stronę edycji menu (Wygląd → Menu) i sprawdź, czy pojawiają się czerwone błędy. Najczęściej spotykane to:

  • "Uncaught TypeError" – skrypt próbuje wykonać operację na elemencie, który nie istnieje
  • "$ is not a function" lub "jQuery is not defined" – problem z ładowaniem jQuery
  • Błędy ładowania plików – niektóre pliki JS potrzebne edytorowi nie ładują się

Jak naprawić błędy JavaScript:

Wyłącz kolejno wtyczki i sprawdzaj, czy błędy znikają. Gdy znajdziesz winowajcę, sprawdź jego ustawienia – wiele wtyczek oferuje opcję wyłączenia swoich skryptów na stronach administracyjnych. Możesz też rozważyć wymianę problematycznej wtyczki na alternatywę.

Sprawdzenie logów błędów

Gdy żadna z powyższych metod nie pomaga, czas sięgnąć do logów błędów. WordPress generuje szczegółowe informacje o problemach, które możesz przeanalizować, aby znaleźć dokładną przyczynę.

Jak włączyć debugowanie:

W pliku wp-config.php znajdź linie związane z debugowaniem i ustaw je następująco: włącz stałą WP_DEBUG (ustaw na true), włącz stałą WP_DEBUG_LOG (ustaw na true), ale pozostaw wyłączoną stałą WP_DEBUG_DISPLAY (false) – dzięki temu błędy będą zapisywane do pliku, ale nie będą wyświetlane użytkownikom na stronie.

Jak analizować logi:

Plik debug.log znajdziesz w katalogu wp-content. Otwórz go, przejdź na sam koniec i poszukaj wpisów z czasem odpowiadającym Twojej próbie zapisania menu. Zwróć uwagę na komunikaty typu "PHP Fatal error", "PHP Warning" związane z pamięcią, bazą danych lub uprawnieniami.

Jeśli log jest pusty mimo włączonego debugowania, sprawdź logi serwera w panelu hostingowym – często znajdują się w sekcji "Logi błędów" lub "Error log". Tam mogą być zapisane błędy, które WordPress nie przechwytuje.

Alternatywne metody tworzenia menu

Jeśli problemu nie da się rozwiązać w standardowy sposób, masz do dyspozycji alternatywne metody tworzenia menu. Każda ma swoje zalety i wady.

Metoda 1: Menu przez plik functions.php

Możesz zdefiniować strukturę menu programowo, rejestrując je w pliku functions.php motywu potomnego i wyświetlając za pomocą funkcji wp_nav_menu. To rozwiązanie jest niezależne od edytora panelu – zmiany wprowadzasz bezpośrednio w kodzie.

Metoda 2: Wtyczka alternatywnego edytora menu

Istnieją wtyczki, które zastępują standardowy edytor menu własnym interfejsem. Jeśli problem leży w edytorze (np. konflikt JavaScript), alternatywny edytor może go ominąć. Sprawdź opinie i zgodność przed instalacją.

Metoda 3: Import/eksport menu

Jeśli możesz utworzyć menu na środowisku testowym, gdzie wszystko działa, możesz je wyeksportować i zaimportować na produkcję. Niektóre wtyczki oferują taką funkcjonalność, a struktura menu jako taksonomia pozwala na eksport przez standardowe narzędzia WordPress.

Zapobieganie przyszłym problemom

Problemy z zapisywaniem menu można skutecznie minimalizować, stosując kilka prostych zasad profilaktycznych. Lepiej zapobiegać niż naprawiać – szczególnie gdy niedziałające menu wpływa na nawigację użytkowników.

Dobre praktyki:

Konfiguracja serwera:

  • Ustaw limit pamięci PHP na minimum 256 MB
  • Zwiększ max_input_vars do 3000
  • Upewnij się, że max_execution_time wynosi co najmniej 120 sekund
  • Regularnie monitoruj wykorzystanie zasobów serwera

Zarządzanie wtyczkami:

  • Instaluj tylko niezbędne wtyczki od zaufanych autorów
  • Po każdej instalacji nowej wtyczki sprawdź, czy menu działa
  • Unikaj wtyczek modyfikujących panel administracyjny, jeśli nie są konieczne
  • Aktualizuj wtyczki regularnie, ale testuj po aktualizacjach

Bezpieczeństwo danych:

  • Rób regularne kopie zapasowe bazy danych
  • Przed większymi zmianami twórz kopię zapasową na żądanie
  • Dokumentuj strukturę menu (zrzuty ekranu lub lista) na wypadek konieczności odtworzenia

Najczęstsze błędy i jak ich unikać:

Błąd #1: Ignorowanie ostrzeżeń o pamięci

Rozwiązanie: Jeśli WordPress wyświetla ostrzeżenie o limicie pamięci, nie ignoruj go – zwiększ limit od razu, zanim pojawią się poważniejsze problemy.

Błąd #2: Dodawanie zbyt wielu elementów do jednego menu

Rozwiązanie: Jeśli masz bardzo rozbudowaną nawigację, podziel ją na kilka mniejszych menu umieszczonych w różnych lokalizacjach (główne, boczne, stopka).

Błąd #3: Aktualizacja wielu rzeczy jednocześnie

Rozwiązanie: Aktualizuj WordPress, motyw i wtyczki osobno, za każdym razem sprawdzając, czy menu działa. Masowa aktualizacja utrudnia znalezienie winowajcy.

Podsumowanie

Problem z zapisywaniem menu w WordPress jest frustrujący, ale w zdecydowanej większości przypadków łatwy do rozwiązania. Zacznij od zwiększenia limitów PHP – to najszybsza i najczęściej skuteczna metoda. Następnie sprawdź konflikty z wtyczkami i motywem. Dopiero na końcu sięgnij po logi błędów i alternatywne rozwiązania.

Pamiętaj, że menu to jeden z najważniejszych elementów strony – bez niego użytkownicy nie znajdą treści, które oferujesz. Dlatego nie odkładaj naprawy na później i działaj systematycznie według powyższych wskazówek.

Jeśli chcesz dowiedzieć się więcej o rozwiązywaniu problemów z WordPressem, polecam nasz artykuł o najczęstszych przyczynach problemów z zapisywaniem zmian, który zawiera dodatkowe wskazówki diagnostyczne.

Masz problem z zapisywaniem menu w WordPress? Chętnie pomożemy Ci zdiagnozować i rozwiązać problemy z menu, nawigacją i konfiguracją serwera. Skontaktuj się z nami, aby uzyskać profesjonalne wsparcie.