web-dev-qa-db-ja.com

CSSまたはJSなしでAppearance管理メニューから[背景とヘッダのカスタマイズ]を削除します。

私は外観メニューから背景とヘッダを削除しようとしていますが、それらは消えているようには見えません!カスタマイズを有効にしたからだと思いますが、CSSやJSを使用せずに削除することはできますか?

これが私のコードです:

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');
}

前もって感謝します!

2
Fredrik

あまりに複雑に思えるかもしれませんが、管理メニューの変更を処理する最良の方法は、与えられたwordpressのremove_関数を見落とし、$menu$submenuのグローバルに直接進むことです。ここで指定した場合は、コードを次のように変更します。

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]);
}

themes.php配列のページのインデックスは奇妙に見えますが、WPをハックしようとしたときに違いはありませんか。これらのグローバルを使うための良い参考文献は ここ にあります。

編集:アレイ内の特定のメニュー/サブメニュー項目のインデックスを(潜在的に、しかし確実にではなく)変更する可能性のあるさまざまな量のプラグインなどを考えれば、必要な数をチェックするのは良い考えです。私が提供したスニペットは機能しません。これを行うには、コードを少し変更します。

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>';
}

これは$submenu配列を「きれいに」表示し、そこからあなたが必要とする正確な数を見つけることができます。

編集:私はまだこのコミュニティについてコメントする担当者を持っていないので、@ Fredrikが一般化の良い仕事をしたことを指摘する価値があります。 +1。

4
James Cushing

これが私の最後のコードです。早い回答をありがとう!

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

これはヘッダーと背景を削除するための別のオプションです( 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');    
}

ループを使用する必要のない別のバージョンは、var_dumpグローバル$submenuで表示できる正しい識別子を使用することです。

function remove_unnecessary_wordpress_menus(){
    remove_submenu_page( 'themes.php', 'customize.php?return=%2Fwp-admin%2Findex.php&#038;autofocus%5Bcontrol%5D=header_image' );
    remove_submenu_page( 'themes.php', 'customize.php?return=%2Fwp-admin%2Findex.php&#038;autofocus%5Bcontrol%5D=background_image' );
}

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

これは、Webサイトへのパスが/の場合にのみ機能します。そうでない場合は、customize.php?return=の後にパスを追加する必要があります。 g。 customize.php?return=%2Fwordpress%2Fパスが/wordpress/の場合。

パスを自動的に処理することもできます。

function remove_unnecessary_wordpress_menus(){
    $site_path = rawurlencode( get_blog_details()->path );

    remove_submenu_page( 'themes.php', 'customize.php?return=' . $site_path . 'wp-admin%2Findex.php&#038;autofocus%5Bcontrol%5D=header_image' );
    remove_submenu_page( 'themes.php', 'customize.php?return=' . $site_path . 'wp-admin%2Findex.php&#038;autofocus%5Bcontrol%5D=background_image' );
}

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

皆さんありがとう!これが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