call_user_func_array () erwartet, dass Parameter 1 ein gültiger Callback ist, Array muss genau zwei Member haben

Ich versuche, eine Themenoptionsseite in meinem Plugin zu erstellen. Ich habe den gesamten Code eingefügt. Aber es gibt einen Fehler:

call_user_func_array () erwartet, dass Parameter 1 ein gültiger Callback ist, Array muss genau zwei Member haben

class KD_Options { public function __construct(){ $this->register_settings_and_fields(); } public function add_menu_page(){ add_options_page('Theme Options','Theme Options','administrator',__FILE__, array('KD_Options'),'display_options_page'); } public function display_options_page(){ ?> 

My theme Options

<?php } public function register_settings_and_fields(){ register_setting('kd_plugin_options','kd_plugin_options');//3rd parameter = optional cb //get_option('kd_plugin_options'); add_settings_section('kd_main_section', 'Main Settings', array($this, 'kd_main_section_cb'), __FILE__);//id, title of section, cb, which page? add_settings_field('kd_banner_heading','Banner Heading', array($this, 'kd_banner_heading_setting'), __FILE__, 'kd_main_section'); add_settings_field('kd_logo','Your Logo: ', array($this, 'kd_logo_setting'), __FILE__, 'kd_main_section'); } /* * * Inputs * */ // Banner Heading public function kd_banner_heading_setting() { echo ''; } // Logo public function kd_logo_setting() { echo ''; } //Function for validation and sanitization public function kd_main_section_cb(){ //optional } } add_action('admin_menu', function(){ KD_Options::add_menu_page(); }); add_action('admin_init', function(){ new KD_Options(); });

Ich denke, es gibt ein Problem mit add_settings_section wo die kd_main_section_cb nicht oder etwas aufgerufen wird. Ich habe Probleme beim Debuggen des Skripts. Also, wenn mir jemand helfen kann, indem Sie mich wissen lassen, was das Problem ist.

Solutions Collecting From Web of "call_user_func_array () erwartet, dass Parameter 1 ein gültiger Callback ist, Array muss genau zwei Member haben"

Die Parameter sind hier ziemlich falsch:

 add_options_page( 'Theme Options', 'Theme Options', 'administrator', __FILE__, array('KD_Options'), 'display_options_page' ); 

Da Sie sich innerhalb einer class befinden, muss der callback ein array( $this, 'display_options_page' ) und nicht nur ein functionsname sein. Sie verwenden dieses Array-Format für WP-Callbacks innerhalb von classn, damit sie korrekt referenziert werden.

add_options_page benötigt jedoch 5 Parameter, nicht 6, und sie sollten sein:

 add_options_page( $page_title, $menu_title, $capability, $menu_slug, $function ); 

Also sollte so etwas funktionieren:

 add_options_page( 'Theme Options', 'Theme Options', 'administrator', 'wpse_233388_slug', array( $this, 'display_options_page' ) ); 

Es kann besser sein, für Ihre Fähigkeiten auch eine echte function als einen Rollennamen zu verwenden. Auf diese Weise können andere Rollen die Fähigkeit erlaubt sein, ohne die betroffenen Benutzer Administratoren zu machen.