Warum wird register_setting () keine Einstellung erstellen?

Ich bin ratlos. Ich habe das wie verrückt erforscht, aber ich kann nicht herausfinden, warum register_setting() nicht für mich funktioniert. Ich bin neu in der Entwicklung von WP-Plugins (offensichtlich), also ist es wahrscheinlich nur etwas Dummes, das mir fehlt. Hör zu.

Ich führe das in der Konstruktorfunktion aus:

 add_action( 'admin_init', array( $this, 'register_settings_and_fields') ); 

Dann habe ich den folgenden Code, der ausführen sollte, was ich brauche:

 /** * Register the settings and fields for the plugin settings page. * * @since 1.0.0 */ public function register_settings_and_fields() { register_setting('my_plugin_settings', 'my_plugin_settings'); add_settings_section( 'my_plugin_main_section', // ID used to identify this section and with which to register options 'Main Settings', // Title to be displayed on the administration page array($this, 'my_plugin_main_settings_callback'), // Callback used to render the description of the section $this->plugin_slug // Page on which to add this section of options ); // Begin defining the fields add_settings_field('my_plugin_data_1', 'Data 1', array( $this, 'my_plugin_data_1_setting' ), $this->plugin_slug, 'my_plugin_main_section'); } // ... and of course other lines of code. 

Natürlich habe ich mehr Code, wo ich Dinge wie die Callback-functionen, etc. zu tun, alles scheint perfekt auszuführen, und die Einstellungen Abschnitt / Feld wird korrekt angezeigt. Aber wenn ich auf /wp-admin/options.php , wurde my_plugin_settings nicht erstellt .

Ich bin ratlos. Irgendwelche Gedanken? Lassen Sie es mich wissen, wenn Sie mehr Code sehen möchten.

Solutions Collecting From Web of "Warum wird register_setting () keine Einstellung erstellen?"

Ich bin nicht genau sicher, was Sie meinen, indem Sie sagen, dass Sie Ihre Einstellungen Abschnitt und Felder korrekt angezeigt, aber Ihre my_plugin_settings wurde nicht erstellt.

Ich weiß manchmal, dass ich vergessen habe, den eigentlichen Admin-Teil hinzuzufügen, der im Allgemeinen ungefähr so ​​aussieht:

 settings_fields( 'my_plugin_settings' ); do_settings_sections( 'my_plugin_settings' ); submit_button(); 

Oder haben Sie Probleme beim Speichern des Formulars? Wenn das der Fall ist, müsste ich Ihre callbackfunktion sehen.

Entschuldigung, wenn dies nicht genau zu dem ist, was Sie brauchen, aber ich kann derzeit Ihre Frage nicht kommentieren, um mehr zu klären, bevor Sie eine Antwort schreiben. Wenn dies nicht beantwortet wird, lass es mich wissen und ich werde meine Antwort entsprechend anpassen.

EDIT # 1:

Ich werde ehrlich sein und sagen, ich bin nicht 100% sicher, dass die Einstellungen automatisch zur database hinzugefügt werden. Was ich direkt vor dem Hinzufügen der Einstellungen Abschnitt und Einstellungen mache, ist dies.

 /* If the options do not exist then create them*/ if ( false == get_option( 'my_plugin_settings' ) ) { add_option( 'my_plugin_settings' ); } 

Dadurch wird die Option in Ihrer database erstellt.

In meinem Fall triggerse das Problem nach dem Debuggen von options.php in Bezug auf die Variable $ whitelist_options , dass das Argument $ option_group das gleiche wie das Options-Seiten-Slug war.

In Ihrem Beispiel

 register_setting($this->plugin_slug, 'my_plugin_settings'); add_settings_section( 'my_plugin_main_section', // ID used to identify this section and with which to register options 'Main Settings', // Title to be displayed on the administration page array($this, 'my_plugin_main_settings_callback'), // Callback used to render the description of the section $this->plugin_slug // Page on which to add this section of options );