Einstellungen api Untermenü und Daten nicht auffüllen

IN FUNKTIONEN.PHP →

locate_template( 'inc/admin/class.settings-api.php', true ); locate_template( 'inc/admin/o-functions.php', true ); 

o-functionen.php Code:

  'wedevs_basics', 'title' => __( 'Basic Settings', 'wedevs' ) ), array( 'id' => 'wedevs_advanced', 'title' => __( 'Advanced Settings', 'wedevs' ) ), array( 'id' => 'wedevs_others', 'title' => __( 'Other Settings', 'wpuf' ) ) ); $fields = array( 'wedevs_basics' => array( array( 'name' => 'text', 'label' => __('Text Input', 'wedevs'), 'desc' => __('Text input description', 'wedevs'), 'type' => 'text', 'default' => 'Title' ), array( 'name' => 'textarea', 'label' => __('Textarea Input', 'wedevs'), 'desc' => __('Textarea description', 'wedevs'), 'type' => 'textarea' ), array( 'name' => 'checkbox', 'label' => __('Checkbox', 'wedevs'), 'desc' => __('Checkbox Label', 'wedevs'), 'type' => 'checkbox' ), array( 'name' => 'radio', 'label' => __('Radio Button', 'wedevs'), 'desc' => __('A radio button', 'wedevs'), 'type' => 'radio', 'options' => array( 'yes' => 'Yes', 'no' => 'No' ) ), array( 'name' => 'multicheck', 'label' => __('Multile checkbox', 'wedevs'), 'desc' => __('Multi checkbox description', 'wedevs'), 'type' => 'multicheck', 'options' => array( 'one' => 'One', 'two' => 'Two', 'three' => 'Three', 'four' => 'Four' ) ), array( 'name' => 'selectbox', 'label' => __('A Dropdown', 'wedevs'), 'desc' => __('Dropdown description', 'wedevs'), 'type' => 'select', 'default' => 'no', 'options' => array( 'yes' => 'Yes', 'no' => 'No' ) ) ), 'wedevs_advanced' => array( array( 'name' => 'text', 'label' => __('Text Input', 'wedevs'), 'desc' => __('Text input description', 'wedevs'), 'type' => 'text', 'default' => 'Title' ), array( 'name' => 'textarea', 'label' => __('Textarea Input', 'wedevs'), 'desc' => __('Textarea description', 'wedevs'), 'type' => 'textarea' ), array( 'name' => 'checkbox', 'label' => __('Checkbox', 'wedevs'), 'desc' => __('Checkbox Label', 'wedevs'), 'type' => 'checkbox' ), array( 'name' => 'radio', 'label' => __('Radio Button', 'wedevs'), 'desc' => __('A radio button', 'wedevs'), 'type' => 'radio', 'default' => 'no', 'options' => array( 'yes' => 'Yes', 'no' => 'No' ) ), array( 'name' => 'multicheck', 'label' => __('Multile checkbox', 'wedevs'), 'desc' => __('Multi checkbox description', 'wedevs'), 'type' => 'multicheck', 'default' => array('one' => 'one', 'four' => 'four'), 'options' => array( 'one' => 'One', 'two' => 'Two', 'three' => 'Three', 'four' => 'Four' ) ), array( 'name' => 'selectbox', 'label' => __('A Dropdown', 'wedevs'), 'desc' => __('Dropdown description', 'wedevs'), 'type' => 'select', 'options' => array( 'yes' => 'Yes', 'no' => 'No' ) ) ), 'wedevs_others' => array( array( 'name' => 'text', 'label' => __('Text Input', 'wedevs'), 'desc' => __('Text input description', 'wedevs'), 'type' => 'text', 'default' => 'Title' ), array( 'name' => 'textarea', 'label' => __('Textarea Input', 'wedevs'), 'desc' => __('Textarea description', 'wedevs'), 'type' => 'textarea' ), array( 'name' => 'checkbox', 'label' => __('Checkbox', 'wedevs'), 'desc' => __('Checkbox Label', 'wedevs'), 'type' => 'checkbox' ), array( 'name' => 'radio', 'label' => __('Radio Button', 'wedevs'), 'desc' => __('A radio button', 'wedevs'), 'type' => 'radio', 'options' => array( 'yes' => 'Yes', 'no' => 'No' ) ), array( 'name' => 'multicheck', 'label' => __('Multile checkbox', 'wedevs'), 'desc' => __('Multi checkbox description', 'wedevs'), 'type' => 'multicheck', 'options' => array( 'one' => 'One', 'two' => 'Two', 'three' => 'Three', 'four' => 'Four' ) ), array( 'name' => 'selectbox', 'label' => __('A Dropdown', 'wedevs'), 'desc' => __('Dropdown description', 'wedevs'), 'type' => 'select', 'options' => array( 'yes' => 'Yes', 'no' => 'No' ) ) ) ); $settings_api = new WeDevs_Settings_API(); //set sections and fields $settings_api->set_sections( $sections ); $settings_api->set_fields( $fields ); //initialize them $settings_api->admin_init(); } add_action( 'admin_init', 'wedevs_admin_init' ); /** * Register the plugin page */ function wedevs_admin_menu() { add_options_page( 'Settings API', 'Settings API', 'delete_posts', 'settings_api_test', 'wedevs_plugin_page' ); } add_action( 'admin_menu', 'wedevs_admin_menu' ); /** * Display the plugin settings options page */ function wedevs_plugin_page() { $settings_api = new WeDevs_Settings_API(); echo '
'; settings_errors(); $settings_api->show_navigation(); $settings_api->show_forms(); echo '
'; } /** * Get the value of a settings field * * @param string $option settings field name * @param string $section the section name this field belongs to * @param string $default default text if it's not found * @return mixed */ function my_get_option( $option, $section, $default = '' ) { $options = get_option( $section ); if ( isset( $options[$option] ) ) { return $options[$option]; } return $default; }

Code für class.settings-api.php

Aber ich glaube, dass Untermenüs nicht registriert werden, weshalb sich nichts im Backend befindet. siehe hier → Bildbeschreibung hier eingeben

Was ist der Fix?

Solutions Collecting From Web of "Einstellungen api Untermenü und Daten nicht auffüllen"

Ich weiß nichts über die WeDevs-Sache, aber ich kenne die Einstellungs-API selbst.

Davon abgesehen habe ich einen Schuss in die dunkle Antwort. wedevs_plugin_page() die Methoden des $settings_api Objekts in Ihrer wedevs_plugin_page() function einen Parameter, für den der Einstellungsabschnitt angezeigt werden soll? Wie $settings_api->show_navigation('wedevs_basic'); ?

Oder nimmt die Objektinstanziierung selbst einen Parameter an? Wie $settings_api = new WeDevs_Settings_API('wedevs_basic'); ?

Ich kenne das WeDevs-Framework nicht mehr, aber es scheint seltsam, dass das WeDevs_Settings_API-Objekt, das Sie während der function admin_init erstellen, später mit einem anderen WeDevs_Settings_API-Objekt kommunizieren kann, das in der Optionsseitenfunktion erstellt wurde. Außer $settings_api->admin_init(); macht etwas wirklich cooles, um diese Kommunikation zu erleichtern, es scheint nur, dass hier etwas fehlt.

BEARBEITEN:

OK, ich denke, du solltest das Einstellungs-API-Plugin nicht verwenden (wie es nicht aktiviert wird), sondern es als Beispiel für deinen eigenen Code in deinem eigenen Theme verwenden. Ich denke, das ist es, was der Autor mit “DIESES PLUGIN IST FÜR ENTWICKLER, NICHT GENERALANWENDER” meint.

Wie auch immer, nimm die class.settings-api.php-Datei aus dem Plugin und füge sie in dein Theme ein (was ich denke, was du schon machst). Ändern Sie nichts in dieser Datei.

Dann werden Sie in Ihrer o-functions.php-Datei einfach alle prozeduralen Sachen los und verwenden stattdessen die Datei oop-example.php. Kopieren Sie den Code aus dieser Datei und fügen Sie ihn in Ihre o-functions.php-Datei ein.

Bearbeiten Sie diese o-functions.php Datei nun nach Ihren Bedürfnissen. Als erstes sollten Sie den Namen der class von “WeDevs_Settings_API_Test” in etwas aussagekräftigeres für Ihr Thema ändern. Vergessen Sie nicht, den classnnamen auch in der Bedingung zu ändern – if ( !class_exists('WeDevs_Settings_API_Test' ) ):

Dann ändere die Parameter für add_options_page( 'Settings API', 'Settings API', 'delete_posts', 'settings_api_test', array($this, 'plugin_page') );

Sie möchten die ersten, zweiten und vierten Parameter ändern, die jeweils der Seitentitel, der Menütitel und der Menü-Slug sind. Die Schnecke muss besonders einzigartig sein.

Dann können Sie die Abschnitte und Felder auf das ändern, was Sie brauchen.

Also eine kurze Zusammenfassung – sobald Sie den Code aus oop-example.php kopieren, müssen Sie den Namen der class ändern, die Parameter für add_options_page() ändern, die Abschnittsnamen in der function get_settings_sections() ändern und das Feld ändern Daten in der function get_settings_fields() . Berühren Sie nichts anderes in diesem Code.

Nun, um es zu beenden, instanziieren Sie ein Objekt mit Ihrer neuen class nach dem Sie locate_template() , wie locate_template() :

 locate_template( 'class.settings-api.php', true ); locate_template( 'o-functions.php', true ); new My_Settings_API(); 

Wenn ich die class in o-functions.php umbenannte, habe ich sie “My_Settings_API” genannt. Sie müssen also den Namen verwenden, den Sie ihm gegeben haben.