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.