webentwicklung-frage-antwort-db.com.de

register_setting () vs add_option ()

Ich erstelle mein erstes WordPress-Plugin. Ich habe eine benutzerdefinierte Funktion für den Plugin-Aktivierungs-Hook hinzugefügt, in der ich mithilfe der Funktion add_option() neue Zeilen in der Tabelle wp_options erstelle. Jetzt möchte ich eine API-Seite für benutzerdefinierte Einstellungen erstellen, und mir ist aufgefallen, dass die Benutzer die Funktion register_setting() verwenden und dann diese Funktionen usw. rendern. Wie ich weiß, werden jedoch Zeilen in der Tabelle wp_options erstellt. Muss ich also noch admin_init einbinden und diese register_setting() aufrufen, wenn ich add_option() zuvor getan habe?

4
Drzim Ti Miesto

Muss ich also noch admin_init einbinden und diese register_setting() aufrufen, wenn ich add_option() zuvor getan habe?

Ja. Du brauchst.

Sie können add_option hinzufügen, um den Standardwert festzulegen. Ein weiterer Aufruf von add_option führt zu nichts. Die Idee von register_setting() ist jedoch mehr als nur add_option().

Jede Einstellung verfügt über eine Kontextseite (Allgemein, Lesen, Schreiben, Medien, von Ihnen definierte Seite, ...) und eine Rückruffunktion, mit der Sie Ihre Daten bearbeiten können.

Weitere Informationen finden Sie unter Einstellungen API .


Jemand könnte denken, dass die Einstellungs-API ein großes Durcheinander ist. Übrigens, das können Sie aus dem WordPress-Kern lesen.

File: wp-admin/includes/template.php
2: /**
3:  * Template WordPress Administration API.
4:  *
5:  * A Big Mess. Also some neat functions that are nicely written.

(es gibt auch einen Teil der Einstellungs-API in wp-includes/option.php )

Auf der anderen Seite kann ein Beispiel aus dem Codex Ihnen helfen, schnell anzufangen.

Wenn Sie jedoch mit Einstellungen arbeiten, müssen Sie tief graben und die möglichen Fehler abdecken - Sie müssen also verstehen, wie es perfekt funktioniert.

Dies kann für die WordPress-Programmierer, die mit dem Schreiben der ersten Plugins beginnen, schwierig sein. Es kann Tage dauern.

In WordPress 4.7 hatten wir Aktualisierungen an der Einstellungs-API, dies verhandelt jedoch nicht die Tatsache, dass die Einstellungs-API möglicherweise in Zukunft aktualisiert wird.

Wenn ich mich recht erinnere, ist es schwierig, die verschiedenen HTML-Elemente auszuwählen, wenn Sie beispielsweise Abschnitte erstellen:

File: wp-admin/includes/template.php
1286: function do_settings_sections( $page ) {
1287:   global $wp_settings_sections, $wp_settings_fields;
1288: 
1289:   if ( ! isset( $wp_settings_sections[$page] ) )
1290:       return;
1291: 
1292:   foreach ( (array) $wp_settings_sections[$page] as $section ) {
1293:       if ( $section['title'] )
1294:           echo "<h2>{$section['title']}</h2>\n";
1295: 
1296:       if ( $section['callback'] )
1297:           call_user_func( $section['callback'], $section );
1298: 
1299:       if ( ! isset( $wp_settings_fields ) || !isset( $wp_settings_fields[$page] ) || !isset( $wp_settings_fields[$page][$section['id']] ) )
1300:           continue;
1301:       echo '<table class="form-table">';
1302:       do_settings_fields( $page, $section['id'] );
1303:       echo '</table>';
1304:   }
1305: }

Wie ich das Problem mit der Settings API sehe, ist diese API alt.


Was kann die mögliche Verbesserung sein. Pseudo-Sprache. Sie definieren Ihr Formular einfach so über die Einstellungs-API

   ---
   name: cool-settings.php
   style: default            
   ---
   textfield: First Name|first-name
   textfield: Last Name|last-name
   textarea: About Yourself|about
   image: Your Image|image|(.gif|.jpg|.jpeg|.png)

Ich habe diese Syntax von Jekyll gesehen.

1
prosti