it-swarm.com.de

add_menu_page () mit Funktion innerhalb einer Klasse

Ich bin ein erfahrener Entwickler, aber neu in WordPress. Ich verfolge einen Kurs zu udemy und sie haben vorgeschlagen, meine Plug-in-Funktionen in einer Klasse zu kapseln, um Namespace-Konflikte zu vermeiden. In einem meiner Aktions-Hooks (nicht sicher, ob das der richtige Begriff ist) versuche ich jedoch, add_menu_page() aufzurufen, um der Admin-Seitenleiste einige Menüelemente hinzuzufügen, und ich kann nicht herausfinden, wie ich auf meine Funktion verweisen soll. Wenn ich ihm nur den Namen der Funktion in meiner Klasse "testing_options_page" gebe, kann WP die Funktion nicht finden. Wenn ich versuche, es in ein Array zu packen, um den Klassennamen und die Funktion wie beim Aufruf von add_action() zu deklarieren, funktioniert der Code WP nicht, da für diesen Parameter kein Array erwartet wird array('kenny_plugin6', 'testing_options_page').

Wie kann ich die Funktion innerhalb der Klasse referenzieren, wenn ich die Funktion add_menu_page() aufrufe?

Nebenfrage: Wird es schmerzhafter sein, meinen Code in eine Klasse zu packen, als es sich lohnt?

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 muss sich in der Plugin-Klasse befinden und wie folgt aussehen

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

Normalerweise wird diese Zeile in der __construct () -Methode dargestellt.

3
KAGG Design