web-dev-qa-db-fra.com

Ordre du menu Admin personnalisé

J'ai une solution simple dans mon functions.php pour réorganiser le menu admin. C'est ici:

// Admin menu - reorder
function custom_menu_order($menu_ord){
  if (!$menu_ord) return true;
  return array(
    'index.php', // Dashboard
    'edit.php?post_type=page', // Pages
    'edit.php?post_type=shop_order', // WooCommerce
    'edit.php?post_type=product', // Products
    'gf_edit_forms', // Forms
    'upload.php', // Media
    'separator1', // First separator
    'separator2', // Second separator
    'separator-last', // Last separator
    'users.php', // Users
    'themes.php', // Appearance
    'options-general.php', // Settings
    'plugins.php', // Plugins
    'tools.php', // Tools
    'itsec', // Security
    'edit.php?post_type=acf-field-group', // Custom Fields
    'edit.php?post_type=cptm' // Post types
  );
}
add_filter('custom_menu_order', 'custom_menu_order');
add_filter('menu_order', 'custom_menu_order');

Cela fonctionne très bien, sauf que cet élément ne fonctionne pas:

'edit.php?post_type=shop_order', // WooCommerce

Il apparaît simplement au bas du menu, tout ce que j'essaie de faire pour le faire apparaître dans le bon ordre échoue. Je crois que le problème est le nom du post_type shop_order . C'est le trait de soulignement qui, je pense, fait échouer.

Des idées sur pourquoi cela pourrait être? S'il vous plaît ne dites pas à utiliser un plugin car l'objectif est d'éviter d'utiliser des plugins supplémentaires. Je vous remercie!

1
bcoyour

Le slug actuel pour l'élément de menu WooCommerce est 'woocommerce'.

Donc si vous remplacez:

'edit.php?post_type=shop_order', // WooCommerce 

avec:

'woocommerce', // WooCommerce 

le code ci-dessus fonctionnera.

J'ai trouvé une fonction pratique qui permet d'afficher tous les éléments du tableau de menus à l'adresse . Comment supprimer des pages de menu d'administration insérées par des plugins? .

Voici la fonction (à partir du lien ci-dessus) que j'utilise pour réorganiser les éléments de menu:

function my_debug_admin_menu() {
    echo '<pre style="margin-left:200px;">' . print_r( $GLOBALS[ 'menu' ], TRUE) . '</pre>';
}
add_action( 'admin_init', 'my_debug_admin_menu' );
4
Zane DeVault