Jak programowo usunąć pozycje menu administratora WordPress bez wtyczki?

Opublikowany: 2020-01-20

Jak programowo usunąć pozycje menu administratora WordPress? Menu pulpitu WordPress są bardzo przydatnym sposobem na poruszanie się po różnych sekcjach pulpitu administratora, ale czasami mogą być uciążliwe lub niepożądane. W szczególności, gdy używasz WordPressa jako systemu zarządzania treścią do tworzenia witryny klienta, w przeciwieństwie do blogowania, musisz usunąć niepotrzebne elementy menu administratora WordPress.

Jednym z najłatwiejszych sposobów na usunięcie elementów menu administratora WordPress jest użycie darmowych wtyczek, które mogą ukrywać elementy menu administratora według roli użytkownika lub warunkowo.

Kiedy nie usuwać elementów menu administratora WordPress za pomocą wtyczki?

Wady korzystania z wtyczek do usuwania elementów menu administratora WordPress mogą polegać na nadmiernym poleganiu na programach wtyczek innych firm w celu zapewnienia spójnych aktualizacji.

Ryzyko wtyczek innych firm

W takim przypadku, jeśli chcesz przejąć kontrolę nad tym, które menu są wyświetlane na pulpicie nawigacyjnym WordPress bez korzystania z wtyczki, ten samouczek jest dla Ciebie najlepszym przewodnikiem.

Stałe aktualizacje

Innym powodem programowego usuwania elementów menu administratora WordPress są ciągłe aktualizacje wszystkich zainstalowanych wtyczek WordPress.

Te aktualizacje są ważne, ponieważ poprawiają wrażenia użytkownika, wydajność i bezpieczeństwo, ale mogą być zbyt uciążliwe, zwłaszcza gdy masz do czynienia z dużą liczbą witryn klientów.

Kilka menu administratora wtyczek

Kiedy masz tak wiele wtyczek zainstalowanych w swojej witrynie, większość zawiera menu administratora i możesz chcieć usunąć menu, ponieważ nie korzystasz stale z menu administratora.

W tym poście zilustruję, jak usunąć elementy menu WordPress bez użycia wtyczki. Aby zaimplementować to w swojej witrynie WordPress, potrzebujesz niewielkiego doświadczenia w edytowaniu witryn WordPress, zwłaszcza w dodawaniu fragmentów kodu do pliku motywu functions.php.

Programowe usuwanie elementów menu administratora WordPress

Lubię zacząć od krótkiego podsumowania, ponieważ ułatwia to czytelnikom szukającym szybkiego rozwiązania w przewodniku krok po kroku. Poniżej przedstawiono kroki, które należy podjąć, aby usunąć elementy menu administratora WordPress.

  1. Zaloguj się do swojej witryny WordPress i zidentyfikuj pozycje menu administratora, które chcesz usunąć
  2. Utwórz zaczep akcji, który przechwytuje zdarzenie admin_menu z funkcją wywołania zwrotnego, która ma logikę usuwania menu administratora WordPress z pulpitu nawigacyjnego.
  3. Funkcja wywołania zwrotnego powinna używać funkcji WordPress remove_menu_page lub remove_submenu_page(), aby usunąć każdy z docelowych elementów menu administratora. Na przykład możesz usunąć menu widżetów z menu motywów za pomocą tego kodu remove_submenu_page( 'themes.php', 'widgets.php'); lub usuń menu główne dashboardu za pomocą tego kodu – remove_menu_page('index.php');
  4. Alternatywnie możesz użyć funkcji php unset() i uzyskać dostęp do wartości globalnej tablicy podmenu, aby usunąć każdy z docelowych elementów menu administratora WordPress.
  5. Dodaj ten fragment kodu do motywu functions.php i zaktualizuj zmiany. Spowoduje to pomyślne usunięcie elementów menu administratora WordPress bez użycia wtyczki.
  6. Możesz także dodać ten kod do funkcji we własnej wtyczce i będzie działać tak, jak w motywie functions.php

Jak usunąć menu administracyjne WordPress bez wtyczki?

Poniżej znajduje się szczegółowe podejście krok po kroku do usuwania elementów menu administratora WordPress poprzez dodawanie kodu zamiast korzystania z innej wtyczki.

Zidentyfikuj elementy menu administratora Slug

Zaloguj się do pulpitu WordPress i sprawdź pozycje menu administratora, które chcesz usunąć. Jak widać w tym przykładzie, główne menu pulpitu nawigacyjnego zawiera plik index.php .

Ten slug jest ważny, ponieważ jest to jeden z parametrów dodawanych do funkcji remove_submenu_page(), co pokrótce zilustruję.

usuń menu administratora wordpress

Zrozumieć, jak usunąć stronę i usunąć podmenu funkcje strony

Usuń funkcję strony

Funkcja remove_menu_page zawiera tylko jeden parametr, którym jest informacja o stronie i usuwa menu administratora najwyższego poziomu. Parametr jest ciągiem znaków, ponieważ jest to slug strony, który jest oczywiście ciągiem, a ogólny kod powinien wyglądać następująco:

 usuń_stronę_menu( ciąg;$menu_slug;)

Usuń funkcję podstrony

Funkcja remove_submenu_page zawiera dwa parametry, pierwszy, który jest informacją o pracy menu nadrzędnego, gdy usuwasz podmenu, a drugi to komunikat podmenu, które chcesz usunąć. Ogólny kod powinien wyglądać następująco:

 remove_submenu_page( ciąg $menu_slug, ciąg $submenu_slug )

Utwórz zaczep akcji, aby usunąć menu administratora i/lub elementy podmenu

Poniżej znajduje się przykład haka akcji, który przechwytuje zdarzenie admin_menu i ma funkcję wywołania zwrotnego, którą nazwaliśmy „ remove_admin_menu_items”

 add_action( 'admin_menu', 'remove_admin_menu_items', 999 );

Utwórz funkcję wywołania zwrotnego, aby usunąć menu administratora i/lub pozycje podmenu za pomocą remove_submenu_page i remove_menu_page ()

Po pierwsze, w funkcji zwrotnej musisz pobrać tablicę globalnych menu z globalną zmienną $submenu, jeśli będziesz używać funkcji unset() .

Po drugie, dodajesz funkcję remove_submenu_page lub remove_menu_page() kierującą na stronę, którą chcesz usunąć, jak pokazano w poniższym kodzie:

 function remove_admin_menu_items() {        

    remove_submenu_page( 'menu_slug', 'submenu_slug'); 

}

Lub używając unset, możesz mieć następującą funkcję oddzwaniania

 function remove_admin_menu_items() {

        globalne podmenu $; 

       unset($submenu['parent menu slug'][indeks tablicy podmenu pozycji administratora]);

 }

Przykład dotyczący usuwania pozycji w menu administratora aktualizacji

Po zalogowaniu się do pulpitu WordPress, znajduje się pozycja menu dotycząca aktualizacji, które znajdują się w głównym menu pulpitu nawigacyjnego, jak pokazano na poniższym obrazku:

usuń menu administratora wordpress

Zilustruję, jak możesz usunąć ten element menu administratora za pomocą metody omówionej powyżej. Po pierwsze, ślimak menu nadrzędnego to index.php , a ślimak menu aktualizacji to update-core.php

Usuń element menu administratora WordPress nadrzędny i podmenu

Możesz więc utworzyć zaczep akcji i funkcję wywołania zwrotnego, aby usunąć cały element menu za pomocą funkcji remove_menu_page() w następujący sposób:

 // Usuń pozycję menu głównego wraz z podstronami /podmenu

add_action( 'admin_menu', 'remove_admin_menu_items', 999 );

 function remove_admin_menu_items() {

    remove_menu_page('index.php');


 }

Spowoduje to usunięcie całego menu i podmenu, jak pokazano na poniższym obrazku:

Usuń tylko elementy podmenu WordPress

Usuń tylko elementy podmenu WordPress

Możesz utworzyć zaczep akcji i funkcję wywołania zwrotnego, aby usunąć element podmenu za pomocą funkcji remove_submenu_page w następujący sposób:

 //Usuń podstrony lub podmenu

add_action( 'admin_menu', 'remove_admin_menu_items', 999 );

function remove_admin_menu_items() {

    remove_submenu_page('index.php','update-core.php' );

}

Spowoduje to usunięcie podmenu określonego w drugim parametrze funkcji remove_submenu_page, w tym przypadku określiliśmy jako „ update-core.php”, a wynik jest taki, jak pokazano na poniższym obrazku:

Korzystanie z funkcji PHP Unset()

Możemy również użyć funkcji unset w PHP, aby usunąć pozycje podmenu iw tym przypadku musimy najpierw uzyskać dostęp do globalnej tablicy $submenu, jak pokazano w poniższym kodzie:

 //dodaj zaczep akcji do zdarzenia admin_menu

add_action( 'admin_menu', 'remove_admin_menu_items', 999 );

//funkcja oddzwaniania
function remove_admin_menu_items() {

    //Tablica menu administratora->Lista wszystkich elementów menu administratora WordPressa znajduje się w tej tablicy
    globalne podmenu $;

    //wydrukuj tablicę na ekranie, abyśmy mogli zobaczyć pozycje menu administratora według indeksu
    
     print('<pre>');
     print_r($podmenu);
     print('<pre>');

      // usuwamy wszystko inne wyświetlane na ekranie, aby widzieć tylko tablicę elementów menu administratora
      umierać();

}

Ten kod przechwytuje globalną tablicę podmenu i wyświetlamy ją, aby wyświetlić tablicę wszystkich menu, dzięki czemu możemy wybrać indeks każdego z elementów menu administratora, a następnie usunąć je według własnego uznania.

W tym kodzie widać użycie pre tagów i funkcji die() do wyświetlania kodu w czytelnym formacie.

Używanie funkcji PHP Unset() wordpress

Usuń pozycję menu podmenu WordPress za pomocą Unset

Tak więc indeks tablicy dla podmenu update-core to 10 . Możemy więc śmiało użyć funkcji unset() w następujący sposób:

 // Usuń pozycję menu głównego wraz z podstronami za pomocą unset

add_action( 'admin_menu', 'remove_admin_menu_items', 999 );

function remove_admin_menu_items() {

    globalne podmenu $;

       unset($submenu['index.php'][0]); //usuń menu najwyższego poziomu index.php (menu pulpitu - Menu główne )
      unset($submenu['index.php'][10]); // usuń podmenu update-core.php (menu aktualizacji)


}

Wyniki będą takie same, jak przy użyciu funkcji WordPressa remove_submenu_page.

Usuń element menu administracyjnego WordPress za pomocą Unset

Możemy również usunąć stronę najwyższego poziomu i podmenu razem, używając funkcji unset kierowanej na każdą z tych stron:

Usuń element menu administracyjnego WordPress za pomocą Unset

Kod powinien wyglądać następująco:

 //. Usuń pozycję głównego menu podrzędnego za pomocą unset

add_action( 'admin_menu', 'remove_admin_menu_items', 999 );

function remove_admin_menu_items() {

   globalne podmenu $;

   unset($submenu['index.php'][10]);


}

Rezultatem będzie usunięcie jednej ze stron, ponieważ usunęliśmy w kodzie:

Jak programowo usunąć pozycje menu administracyjnego WordPress bez wtyczki?

Zawijanie

W tym poście szczegółowo omówiliśmy dwa główne sposoby usuwania elementów menu administratora WordPress i czyszczenia pulpitu WordPress. Jeśli jesteś programistą WordPress, możesz ponownie użyć tego kodu i skopiować go z łatwością, sprawdź mój gist i możesz śledzić mnie na GitHub, aby uzyskać więcej przyszłych aktualizacji. Udostępniłem tutaj również kilka innych fragmentów – WP-Snippets . Mam nadzieję, że możesz teraz usunąć te elementy administratora WordPress, których nie chcesz ze swojego menu.