web-dev-qa-db-ja.com

WordPressおよび未定義の関数add_menu_page()の呼び出し

最近WordPressプラグインの開発に入ったので、メニューページ(左側のメニューのリンク)を追加したいと思います。前のSO質問とWordPressコーデックスはそれが呼び出すのと同じくらい簡単だと言います:

add_menu_page( $page_title, $menu_title, $capability, $menu_slug, $function, $icon_url, $position );

ただし、プラグインセットアップファイルでこれを試してみると、関数が未定義であることがわかります。

PHP Fatal error:  Call to undefined function add_menu_page()

ドキュメントによると、これは非常に簡単なことのように思えますが、私は完全に困惑しています。どんな助けでも本当にありがたいです:)

20
Gazillion

あなたのコードがどのように見えるかはわかりませんが、これは私がテストしたばかりの方法であり、それは機能しました:

add_action('admin_menu', 'my_menu');

function my_menu() {
    add_menu_page('My Page Title', 'My Menu Title', 'manage_options', 'my-page-slug', 'my_function');
}

function my_function() {
    echo 'Hello world!';
}

ここを見てください http://codex.wordpress.org/Administration_Menus

40
Unknown_Guy

関数add_menu_pageをフックの外で使用したか、フックするのが早すぎたため、このエラーメッセージが表示されます。

関数add_menu_pageは、ユーザーがメニューにアクセスするために必要な機能を持っているかどうかを判断する3番目の引数として機能を取得するため、ユーザー機能が設定されている場合にのみ関数を使用できます。したがって、次のようにadmin_menuフックで関数を使用する必要があります。

add_action( 'admin_menu', 'register_my_custom_menu_page' );

function register_my_custom_menu_page(){
    add_menu_page(  __( 'Custom Menu Title' ), 'custom menu', 'manage_options', 'custom-page-slug', 'my_custom_menu_page' );
}

function my_custom_menu_page() {
    echo __( 'This is custom menu page.' );
}

詳細については、次のWordPressコーデックスページを参照してください。

http://codex.wordpress.org/Function_Reference/add_menu_page

6
Vinod Dalvi