it-swarm.com.de

Erstellen einer Menüseite in einem objektorientierten Plugin

Ich versuche zum ersten Mal, ein Plugin für Wordpress nach OOP zu erstellen. Ich habe einige Probleme beim Versuch, eine Untermenüseite mit der Funktion add_users_page() zu erstellen.

Hier ist eine einfache Version meines Codes:

class MyPlugin  {
    public function __construct()
    {
       add_action('admin_menu', array($this, 'create_menu'));
    }

    public static function create_menu()
    {
    add_users_page( 'My Plugin Menu', 'My Plugin Menu (Test)', 'list_users', 'mp_test_page', array($this, 'display_test_page'));
    }

    public static function display_test_page()
    {
    if ( !current_user_can( 'list_users' ) )  {
    wp_die( __( 'You do not have sufficient permissions to access this page.' ) );
            }
    echo '<h2>Test page</h2>';
    echo '<p>The Problem : I cannot see that output in the corresponding submenu page</p>';
    }
}
new MyPlugin();

Das Problem ist, dass ich die HTML-Ausgabe in der Funktion display_test_page() nicht sehen kann ... obwohl die Untermenüseite tatsächlich im allgemeinen Menü des Benutzers erstellt wurde.

Vielen Dank im Voraus für Ihre Hilfe,

2
user54952

Sie haben sich in statischer und nicht statischer Verwendung vertauscht. Ihr Stil ist nicht statisch, aber Ihre Methoden sind als solche deklariert. Wenn Sie den WP_DEBUG mode aktivieren, werden folgende Fehler angezeigt:

Hinweis: Undefinierte Variable: Dies

Warnung: call_user_func_array () erwartet, dass Parameter 1 ein gültiger Rückruf ist. Das erste Arraymitglied ist kein gültiger Klassenname oder Objekt

Dies geschieht, weil die static-Methode nicht "weiß", worauf $this verweist, da static nicht an specific instance der Klasse gebunden ist.

Deklarieren Sie einfach Ihre Methoden als public und nicht als public static für diese Code-Organisation.

1
Rarst