web-dev-qa-db-ja.com

「メディア」の管理者メニューの位置を変更するにはどうすればいいですか?

"Media"管理ページの優先順位/メニュー順を変更したいのですが。 apply_filterでそれを変更する方法はありますか?

Menu_order内のすべてのページをリストしなくても、「メディア」ページの優先順位のみを変更する方法はありますか?

ありがとう

1
Spiro

2つのフィルタの組み合わせがあります、menu_orderは仕事をしますが、custom_menu_orderを有効にするためにmenu_orderも使用します。

function wpse_233129_custom_menu_order() {
    return array( 'index.php', 'upload.php' );
}

add_filter( 'custom_menu_order', '__return_true' );
add_filter( 'menu_order', 'wpse_233129_custom_menu_order' );

これはDashboardの直後にupload.php(メディアスクリーン)を置き、それから他のトップレベルのメニュー項目が続きます。

Mediaを他の場所に配置したい場合は、その前に配置する必要がある他のすべての画面を一覧表示するだけです。

あるいは、WPのグローバル$ menu配列を直接アドレス指定することもできます。

function wpse_233129_admin_menu_items() {
    global $menu;

    foreach ( $menu as $key => $value ) {
        if ( 'upload.php' == $value[2] ) {
            $oldkey = $key;
        }
    }

    $newkey = 26; // use whatever index gets you the position you want
    // if this key is in use you will write over a menu item!
    $menu[$newkey]=$menu[$oldkey];
    $menu[$oldkey]=array();

}
add_action('admin_menu', 'wpse_233129_admin_menu_items');

別のメニュー項目を上書きする可能性についてのコメントに注意してください。衝突しない配列インデックスの検索でのコーディングは、読者のための課題として残されています。もちろん、最初の方法を使用してもこれは問題になりません。

このようにWPのグローバル企業をいじるのは汚い感じがする。 WPの内部の仕組みを変更すると、問題が発生する可能性があります。可能であれば、フックおよびAPIによって提供される抽象化を使用してください。

3

上記のコードで繰り返しPHPエラーが出た後、私はプラグインを使いました、
管理者メニューエディタ 。メニューを並べ替えるだけでなく、プラグインによって追加されたメニューを非表示にしたり移動したりすることもできます。

0
Slam

簡単な Google検索 によっていくつかの結果が得られ、簡単な解決策を見つけることができました。

以下のコードは 簡単なWebデザインチュートリアル Webサイトからのものですが、リンクが切れた場合に備えて以下に貼り付けます。

function reorder_admin_menu( $__return_true ) {
    return array(
         'index.php', // Dashboard
         'edit.php?post_type=page', // Pages
         'edit.php', // Posts
         'upload.php', // Media
         'themes.php', // Appearance
         'separator1', // --Space--
         'edit-comments.php', // Comments
         'users.php', // Users
         'separator2', // --Space--
         'plugins.php', // Plugins
         'tools.php', // Tools
         'options-general.php', // Settings
   );
}
add_filter( 'custom_menu_order', 'reorder_admin_menu' );
add_filter( 'menu_order', 'reorder_admin_menu' );

表示させたい場所にmedia.phpを移動するだけでメニューを並べ替えることができます。

ご覧のとおり、上記のコードはよくコメントされており、どの.phpファイルがどのリンクであるかを示しています:)

0
Stephen