web-dev-qa-db-ja.com

サブメニューリンク作成時の奇妙な振る舞い

ダッシュボードのサイドバーメニューに2ページを追加する必要があるプラグインを開発しようとしています。そのうちの1つが主なカテゴリーです。設定ページの2番目のサブメニュー項目を除いて、すべて問題ありません。ほぼ同数のコーデックスを熟読し、同様の問題をWebで検索したところ、解決策は見つかりませんでした。

これで何か足りない? (最初のサブメニューは、もちろん、重複したランディングページを作成することです)

コード

add_action('admin_menu', 'my_add_submenu');
function my_add_submenu(){
    add_menu_page( 'Author Discussion', 'Discussion', 'manage_options', 'author_discuss', 'author_discuss_build_page', plugins_url( 'author-discussion/images/icon.png' ), 999 );
    add_submenu_page( 'author_discuss', 'Author Discussion', 'Author Discussion', $menu_capability, 'author_discuss' );
    add_submenu_page( 'author_discuss', 'Author Discussion Settings', 'Settings', 'manage_options', 'author_discuss_settings', 'author_discuss_settings_page' );
}

function author_discuss_build_page(){
    //do something
}

function author_discuss_settings_page() { 
    //do something
}

効果

私が気付くことの一つは、私がサイドバーの中のリンクをクリックしようとするとき、それはそれにリダイレクトする:

  • / wp-admin/author_discuss_settings
  • / wp-admin/admin.php?page = author_discuss_settingsの代わりに

明らかなものが欠けているような気がします。

私は何を試しましたか?

私はここにある WordPress Codexの最後の例に従いました

アクションをadmin_menuからadmin_initに変更して、結果が変わるかどうかを確認しました。 URLは期待どおりに印刷され、/ wp-admin/admin.php?page = author_discuss_settingsが表示されますが、「十分な権限がありません」というエラーが表示されます。

1
Brandon White

コーデックスの同じページに、これがあります。

注:「このページにアクセスするための十分な権限がありません」に遭遇した場合wp_die()画面にメッセージが表示されたら、早すぎます。

だからそれはあなたの質問に部分的に答えます。

第二部、次のコードは動作するはずです。

add_action('admin_menu', 'my_add_submenu');
function my_add_submenu(){
      add_menu_page( 'Parent', 'Parent', 'manage_options', 'author_discuss', 'author_parent' ); 
      add_submenu_page( 'author_discuss', 'Author Discussion', 'Author Discussion', 'manage_options', 'author_discuss' );
      add_submenu_page( 'author_discuss', 'Author Discussion Settings', 'Settings', 'manage_options', 'author_discuss_settings', 'author_discuss_settings_page' );
}

function author_parent() {

}

function author_discuss_settings_page() { 
    //do something
}

あなたの機能をチェックして、何らかのタイプミスがあるかどうか確かめてください。

2
JMau