web-dev-qa-db-fra.com

add_submenu_page ne fonctionne pas

J'ai construit un plugin qui crée un menu personnalisé comme ceci:

    add_menu_page( 'Wholesale Pricing', 'Wholesale', 'manage_options', 'woo-wholesale', 'woo_wholesale_page_call'); 

J'essaie maintenant d'ajouter un élément de sous-page en dessous de celui-ci. J'ai lu le codex et proposé:

add_submenu_page( 'woo-wholesale', 'Registrations', 'Registrations', 'manage_options', 'woo-wholesale-registrations', 'wwpr_page_call' ); 

Je suppose que cela est incorrect car l'élément de sous-menu n'est pas affiché. Quelqu'un peut-il nous éclairer s'il vous plaît?

3
danyo

Assurez-vous que votre hook add_action est défini sur admin_menu .

Voici un exemple de code:

add_action('admin_menu', 'wpse149688');
function wpse149688(){
    add_menu_page( 'Wholesale Pricing', 'Wholesale', 'manage_options', 'woo-wholesale', 'woo_wholesale_page_call');
    add_submenu_page( 'woo-wholesale', 'Registrations', 'Registrations', 'manage_options', 'woo-wholesale-registrations', 'wwpr_page_call' ); 
}

Vérifiez également si l'utilisateur avec lequel vous vous êtes connecté a la possibilité d'afficher ce menu. Comme ce menu est défini avec manage_options capacité .

7
Abhineet Verma

J'ai commis la même erreur que l'OP car ce n'est pas intuitif de savoir comment le faire fonctionner. En lisant le codex dans Menus d'administration , j'ai découvert la réponse.

Le problème (pour moi, en tout cas) était de modifier le paramètre $parent_slug dans l'appel à add_submenu_page(...).

Donc, dans le cas du PO, vous changeriez:

add_submenu_page( 
    'woo-wholesale', 
    'Registrations', 
    'Registrations', 
    'manage_options', 
    'woo-wholesale-registrations', 
    'wwpr_page_call' 
);

à:

add_submenu_page( 
    'edit.php?post_type=woo-wholesale', 
    'Registrations', 
    'Registrations', 
    'manage_options', 
    'woo-wholesale-registrations', 
    'wwpr_page_call' 
);
2
ban-geoengineering