WordPress-Seite Einstellungen nicht speichern der Einstellungen in die Datenbank
Ich entwickle meine erste WordPress-plugin. Ich habe folgenden einige Anleitungen zum erstellen einer Seite mit den Einstellungen.
Habe ich folgende Seite, die korrekt zeigt den Wert der Felder in der Datenbank. Wenn ich auf die Seite, Bearbeiten Sie die Felder und drücken Sie "änderungen Speichern" werden die änderungen nicht in der Datenbank gespeichert. Wenn ich die Werte direkt in die Datenbank, dann die Werte zeigen, nicht korrekt in die Eingabefelder ein, aber ich kann immer noch nicht aktualisieren Sie die Werte von meiner Seite.
Können Sie sehen, offensichtliche Fehler, die ich gemacht habe, oder Dinge, die ich bin fehlt?
<?php
add_action('admin_menu', 'SetupPage');
function SetupPage()
{
add_action('admin_init', 'RegisterSettings');
//Setup administration menu item
if (function_exists('add_options_page'))
{
add_menu_page(__("TestPage"), __("TestPage"), "manage_options", __FILE__, 'PageContent', plugins_url('/images/icon.png', __FILE__));
}
}
function RegisterSettings()
{
//Add options to database if they don't already exist
add_option("test_option1", "", "", "yes");
add_option("test_option2", "", "", "yes");
add_option("test_option3", "", "", "yes");
//Register settings that this form is allowed to update
register_setting('test_settings', 'test_option1');
register_setting('test_settings', 'test_option2');
register_setting('test_settings', 'test_option3');
}
?>
<?php
function PageContent()
{
if (!current_user_can('manage_options'))
wp_die(__("You don't have access to this page"));
?>
<div class="wrap">
<h2><?_e("Test settings")?></h2>
<form method="post">
<?php settings_fields('test_settings'); ?>
<table class="form-table">
<tr valign="top">
<th scope="row">test_option1</th>
<td><input type="text" name="test_option1" value="<?php echo get_option('test_option1'); ?>" /></td>
</tr>
<tr valign="top">
<th scope="row">test_option2</th>
<td><input type="text" name="test_option2" value="<?php echo get_option('test_option2'); ?>" /></td>
</tr>
<tr valign="top">
<th scope="row">test_option3</th>
<td><input type="text" name="test_option3" value="<?php echo get_option('test_option3'); ?>" /></td>
</tr>
</table>
<p class="submit">
<input type="submit" class="button-primary" value="<?php _e('Save changes') ?>" />
</p>
</form>
</div>
<?php
}
?>
- Otto ' s tutorial wird Euch auf die richtige Spur: ottopress.com/2009/wordpress-settings-api-tutorial
- Ich habe versucht, starten über und folgte Otto ' s tutorial. Jetzt ist es Arbeit. Es ist nicht mit der exakt gleichen Methode zwar nicht, aber ich denke, ich werde weiterhin von diesem. Dank
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sieht für mich wie Sie brauchen, um hinzuzufügen, die
action="options.php"
im form-tag. Ansonsten scheint es Recht. Kein Zweifel, Sie haben betrachtet,diese codex-Seite, da Ihr code ist sehr ähnlich, aber das ist der einzige Unterschied, den ich sehe.Es ist auch erwähnenswert, dass, wenn Sie dieses problem haben, überprüfen, um zu sehen, wenn Ihr versucht, auf der echo-Einstellungen Felder.
Also bei mir hatte ich dieses:
Was bedeutet, dass diese beiden Felder waren immer hallte:
Ändern, um dieses fest für mich.
Überprüfte ich den code und geprüft von meiner Seite und ich habe einige änderungen sehen, die komplette funktionierende code
Hoffe, dass es helfen kann, für jemanden 🙂
Welchen browser verwenden Sie? Es mag seltsam klingen, aber die Verwendung von Chrome, die ich gefunden habe, ein paar plugins, die nicht speichern Sie die Einstellungen richtig.
Nicht eine große technische Antwort, aber wenn das plugin nur für den eigenen Gebrauch, und Sie können Ihre admin-Funktionen arbeiten im Firefox und IE kann es einfacher sein, sich für "gut genug".
Haben Sie eine multisite-set? Wenn dem so ist, wird die Einstellung geschaffen werden, in der wp_options-Tabelle instread der lokalen wp_*_options-single-site-Tabelle. Verwenden Sie
Diese ussaly tritt auf, wenn Sie gezwungen multisite auf bestehenden blog und jetzt versuchen Sie zur Verwaltung der Optionen.