web-dev-qa-db-fra.com

Comment changer la position du menu administrateur de "Media"?

Je souhaite modifier l'ordre de priorité/menu de la page d'administration "Media". Est-il possible de changer cela via apply_filter?

Est-il possible de changer uniquement la priorité de la page "Media" sans avoir à lister toutes les pages dans menu_order?

Merci

1
Spiro

Il existe une combinaison de deux filtres, menu_order fait le travail, mais vous utilisez également custom_menu_order pour activer 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' );

Cela mettra upload.php (l'écran Média) juste après le tableau de bord, suivi des autres éléments de menu de niveau supérieur.

Si vous souhaitez placer Media ailleurs, répertoriez simplement tous les autres écrans devant le précéder dans le tableau.

Sinon, vous pouvez directement adresser le tableau global $ menu de WP:

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

Notez le commentaire sur la possibilité de remplacer un autre élément de menu. Le codage dans une recherche d’index de tableau qui n’entre pas en collision reste un exercice pour le lecteur. Ce n'est pas un problème si vous utilisez la première méthode, bien sûr.

Il y a quelque chose dans le fait de jouer avec les globales de WP comme ça qui me fait me sentir sale. Les modifications apportées au fonctionnement interne de WP peuvent vous gâcher la tâche. Utilisez les abstractions fournies par les hooks et les API lorsque vous le pouvez.

3
Andy Macaulay-Brook

Après avoir obtenu des erreurs de répétition PHP avec le code ci-dessus, je suis allé avec un plugin,
Éditeur de menu Admin . Je peux non seulement réorganiser les menus, mais également masquer ou déplacer les menus ajoutés par les plugins.

0
Slam

Un rapide Recherche Google m'a donné plusieurs résultats et j'ai réussi à trouver une solution facile.

Le code ci-dessous provient de Didacticiel Easy Web Design site Web mais je le collerai ci-dessous au cas où ce lien serait rompu.

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

Vous pouvez réorganiser le menu en déplaçant simplement media.php où vous souhaitez qu'il soit affiché.

Comme vous pouvez le constater, le code ci-dessus est bien commenté et vous indique quels fichiers .php correspond à quel lien :)

0
Stephen