web-dev-qa-db-ja.com

クラス内に関数を持つadd_menu_page()

私は経験豊富な開発者ですが、WordPressの初心者です。私はudemyのコースを追いかけていて、名前空間の衝突を避けるためにプラグイン関数をクラスにカプセル化することを提案しました。しかし、私のアクションフックの1つの中で(それが正しい用語であるかどうかわからない)、管理サイドバーにいくつかのメニュー項目を追加するためにadd_menu_page()を呼び出そうとしています。クラス"testing_options_page"内の関数の名前を指定しただけでは、WPはその関数を見つけることができません。 add_action()呼び出しで行ったようにクラス名と関数を宣言するためにそれを配列でラップしようとすると、WPコードはそのパラメータarray('kenny_plugin6', 'testing_options_page')の配列を想定していないため、ホークします。

add_menu_page()関数を呼び出すときにクラス内の関数を参照するにはどうすればいいですか?

副次的な質問:私のコードをクラスにラップすることは、その価値があるほど面倒になるでしょうか。

add_action( 'admin_menu', array( 'kenny_plugin6', 'add_menu_items' ) );

class kenny_plugin6 {
   function add_menu_items() {
      add_menu_page( 'Browser Tab Title', 'Menu Item Title', 'manage_options', 
            'testing_menu_page', 'testing_options_page', '', '25' );
      add_submenu_page( 'testing_menu_page', 'Test Links', 'Test Title', 'manage_options', 
            'get_test_links' );

   }

   function testing_options_page() {
      ?>
      <h3>Testing Options</h3>

      <div>Put more stuff here</div>
      <?php
   }

   function get_test_links() {
      ?>
      <h3>Test Links</h3>

      <div> Put more stuff here.</div>
      <?php
   }
}
1
Kenny Wyland

add_actionはプラグインクラス内になければならず、次のようになります。

 add_action( 'admin_menu', array( $this, 'add_menu_items' ) );

通常この行は__construct()メソッド内にあります。

3
KAGG Design