webentwicklung-frage-antwort-db.com.de

Entfernen Sie "Hintergrund und Header anpassen" aus dem Admin-Menü "Darstellung" ohne CSS oder JS

Ich versuche, Hintergrund und Kopfzeile aus dem Darstellungsmenü zu entfernen, aber sie scheinen nicht zu verschwinden! Ich denke, es liegt daran, dass ich das Anpassen aktiviert habe, aber kann ich sie trotzdem entfernen, ohne CSS oder JS zu verwenden?

Hier ist mein Code:

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

function remove_unnecessary_wordpress_menus(){
    remove_menu_page('themes.php?page=custom-background');
    remove_submenu_page('themes.php', 'custom-background');
    remove_submenu_page('themes.php', 'custom-header');
}

Danke im Voraus!

2
Fredrik

So überkompliziert es auch klingt, ich finde es immer am besten, Änderungen am Admin-Menü vorzunehmen, indem ich die angegebenen Funktionen von wordpress remove_ übersehen und direkt zu den globalen $menu- und $submenu-Elementen übergehe. In dem hier angegebenen Fall möchten Sie Ihren Code ändern in:

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

function remove_unnecessary_wordpress_menus(){
    global $submenu;
    unset($submenu['themes.php'][20]);
    unset($submenu['themes.php'][22]);
}

Die Indizes der Seiten im themes.php-Array scheinen seltsam, aber was ist nicht, wenn Sie versuchen, WP zu hacken ?! Eine gute Referenz für die Verwendung dieser Globalen finden Sie hier .

EDIT: Nur ein Gedanke, angesichts der unterschiedlichen Anzahl von Plugins usw., die (möglicherweise, aber nicht definitiv) den Index eines bestimmten Menü-/Untermenüeintrags im Array ändern könnten, wäre es eine gute Idee, die erforderlichen Zahlen zu überprüfen, wenn Das von mir bereitgestellte Snippet funktioniert nicht. Sie können dies tun, indem Sie den Code leicht ändern:

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

function remove_unnecessary_wordpress_menus(){
    global $submenu;
    //Left margin is to account for the admin sidebar menu
    echo '<pre style="margin-left:11em">';
    print_r($submenu);
    echo '</pre>';
}

Dadurch wird das $submenu-Array 'hübsch' gedruckt, aus dem Sie die genauen Zahlen finden, die Sie benötigen.

EDIT: Da ich noch nicht den Repräsentanten habe, der diese Community kommentiert, sollte ich darauf hinweisen, dass @Fredrik einen guten Job bei der Verallgemeinerung gemacht hat. +1.

4
James Cushing

Hier ist mein endgültiger Code. Danke für die schnelle Antwort!

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

function remove_unnecessary_wordpress_menus(){
    global $submenu;
    foreach($submenu['themes.php'] as $menu_index => $theme_menu){
        if($theme_menu[0] == 'Header' || $theme_menu[0] == 'Background')
        unset($submenu['themes.php'][$menu_index]);
    }
}
6
Fredrik

Hier ist eine weitere Option zum Entfernen von Header und Hintergrund ( source ):

//Remove the custom options provided by the default twentyeleven theme.     
add_action( 'after_setup_theme','remove_twentyeleven_options', 100 );
function remove_twentyeleven_options() {    
    remove_custom_background();
    remove_custom_image_header();
    remove_action('admin_menu', 'twentyeleven_theme_options_add_page');    
}

Vielen Dank an alle! Hier ist der Code in WordPress 4.9.8.

function remove_header_and_bg(){
  global $submenu;
  unset($submenu['themes.php'][6]); // customize
  unset($submenu['themes.php'][15]); // header_image
  unset($submenu['themes.php'][20]); // background_image
}
add_action( 'admin_menu', 'remove_header_and_bg', 999 );
0
Yutaro Ikeda