J'exécute une nouvelle installation de Wordpress 3.3.2 et le seul plug-in activé est celui que je développe, mais je n'arrive pas à résoudre un problème de permissions dans add_menu_page
. À l'exception de l'utilisation de fonctions anonymes au lieu de fonctions nommées, je suis la documentation presque exactement.
Ma source de plugin:
<?php
/*
Plugin Name: Some Plugin
*/
add_action('admin_init', function() {
add_menu_page('Some Page', 'Some Page', 'manage_options', 'some-slug', function() {
echo 'Hello, world!';
});
});
?>
Le lien de menu apparaît bien en bas du menu, mais au lieu de "Bonjour le monde!", Je vois:
Vous ne disposez pas des autorisations suffisantes pour accéder à cette page.
J'ai également essayé d'utiliser la fonctionnalité administrator
à la place de manage_options
, mais les résultats sont identiques.
Qu'est-ce que je fais mal?
Vous voulez le hook admin_menu
, plutôt que admin_init
.
En outre, vous ne devriez pas utiliser de fonctions anonymes. Au lieu de cela, utilisez:
function wpse51004_add_menu_page() {
add_menu_page('Some Page', 'Some Page', 'manage_options', 'some-slug', 'wpse51004_some_page_callback');
};
add_action('admin_menu', 'wpse51004_add_menu_page');
function wpse51004_some_page_callback() {
echo 'Hello, world!';
}
Vous devez utiliser admin_menu
plutôt que admin_init
, c'est pourquoi vous obtenez une erreur.
my_plugin_add_menu_page(){
add_menu_page('Some Page', 'Some Page', 'manage_options', 'some-slug', 'my_plugin_some_page_callback');
}
add_action('admin_menu', 'my_plugin_some_page_callback');
function my_plugin_some_page_callback() {
echo 'Hello, world!';
}
Vous pouvez également utiliser function
anonyme mais organiser le nom de vos fonctions est plus propre.