Was ist der Unterschied zwischen Optionen und Einstellungen?

14

Und welches soll ich verwenden?

Was ist der Unterschied zwischen Options API und Setings API? ?

Ich habe ein Thema mit über 100 Admin-Optionen. Wie soll ich sie registrieren und speichern? In diesem Moment verwende ich Options API , bin aber nicht sehr zufrieden damit. Jede einzelne Option wird separat registriert, sodass viele Datenbankabfragen erstellt werden.

Ich sehe im Moment drei Möglichkeiten zum Speichern von WordPress-Optionen / -Einstellungen:

1. Options API - der alte (der schlimmste?) Weg.

(Ich benutze diesen schon)

<form method="post" action="options.php">
<?php wp_nonce_field('update-options'); ?>        

// all the inputs

<input type="hidden" name="action" value="update" />
<input type="hidden" name="page_options" value="option1,option2,option3,..." />
<p class="submit">
<input type="submit" value="<?php _e('Save Changes') ?>" />
</p>
</form>

Und dann im Frontend:

echo get_option('option1'); 

Sieht hässlich aus und ich denke nicht, dass dies der richtige Weg ist, eine große Anzahl von Optionen zu speichern (ich würde sie gerne irgendwie gruppieren).

2. Options API - 1 Option als großes Array.

Ich bin mir hier nicht sicher, wie ich dieses Array mithilfe von HTML-Formularen aktualisieren soll. Ich glaube, es sollte so gehen:

$opt['option1'] = foo
$opt['option2'] = foo
$opt['option3'] = bar

update_option('theme_settings',$opt);

Und dann im Frontend:

$settings = get_option('theme_settings');
echo $settings['option1']; 
echo $settings['option2']; 
echo $settings['option3']; 

Ich habe gehört, es verringert die Anzahl der Abfragen und ich habe sie alle als eine Option. Ich würde gerne dieses verwenden, aber wie ich oben erwähnte, bin ich mir nicht sicher, wie ich diese Reihe von Optionen im Wordpress-Admin-Formular aktualisieren soll. Ich vermute:<input type="hidden" name="theme_settings" value="option1,option2,option3,..." /> Wird das Array überschrieben, anstatt neue Elemente hinzuzufügen?

3. Settings API - der neue Weg.

Benötigt viel zusätzlichen Code:

function register_theme_settings() {
    //register our settings   
    register_setting( 'theme-settings', 'option1' );     
    register_setting( 'theme-settings', 'option2' );     
    register_setting( 'theme-settings', 'option3' );     
    register_setting( 'theme-settings', 'option4' );     
    register_setting( 'theme-settings', 'option5' );     
    // imagine this for 100 and more options    
};

Und ich bin nicht sicher, was ist der Unterschied zwischen dieser und der Methode mit einer Option als Array?

tl; dr Also, wie soll ich mein Design - Einstellungen Speicherprojekt so wird es wird schnell arbeiten und speichert alle Optionen / Einstellungen an einem Ort so werde ich im Stande sein, zum Beispiel Echo / Dump sie alle mit einer einfachen Funktion (ja Ich möchte das schlecht machen, aber ich habe keine Ahnung, wie ich das mit dieser Einstellungs-API machen soll. Die zweite Methode sieht bisher am besten aus.

Wordpressor
quelle

Antworten:

11

Die Options-API ist in erster Linie eine Datenbank-API, mit der Sie auf einfache Weise Werte in der Optionstabelle der Datenbank abrufen und speichern können.

Die Einstellungs-API ist eine Schnittstellen-API. Sie können Einstellungsbildschirme so erstellen, dass sie sich an zukünftige Änderungen der WordPress-Benutzeroberfläche anpassen, sowie die Sicherheit (Nonces und Whitelisting und Validierung usw.) automatisch und einfacher handhaben als das Rolling Ihres eigenen Codes.

Weitere Informationen zur Einstellungs-API: http://ottopress.com/2009/wordpress-settings-api-tutorial/

Otto
quelle
3
+1. Die Einstellungs-API ist der richtige Ansatz und verarbeitet Ihre 100 Themenoptionen, ohne ein Auge zu verlieren. Einige Idioten haben ein sehr langwieriges Tutorial für die Integration der Settings-API in WordPress-Themes geschrieben .
Chip Bennett
Otto, @Chip Bennett, danke Leute. Ich habe noch eine zusätzliche Frage - sollte ich laut Dokumentation mehrere Einstellungsgruppen für jede Admin-Seite erstellen, hat dies einen Einfluss auf die Leistung / Anzahl der Abfragen? Ist etwas falsch daran, alle Optionen in einer Gruppe zu belassen (sagen wir 'Themeneinstellungen'), wie ich in meiner zu langen Frage zum Lesen erklärt habe? :)
Wordpressor
2
Ich würde nur die Verwendung einer Optionsgruppe empfehlen . Wenn Sie eine UI-Organisation benötigen, verwenden Sie Einstellungsabschnitte und / oder Registerkarten auf der Einstellungsseite.
Chip Bennett
@Chip Bennett, okay, vielen Dank :) Tolles Tutorial übrigens.
Wordpressor
@ChipBennett Link: Das Einfügen der Einstellungs-API in WordPress-Designs in Ihren Kommentar ist fehlerhaft .
Vijay Chavda