web-dev-qa-db-fra.com

add_menu_page permissions - qu'est-ce que je fais mal?

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?

5
Kevin

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!';
    }
13
Stephen Harris

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.

0
hsn0331