Ich bin neu in der Erstellung von WordPress-Plugins. Ich möchte ein Plugin erstellen, das benutzerdefinierte Seitenoptionen unter den Einstellungsoptionen des wp-admin-Bereichs anzeigt und den Wert der Eingabedaten speichert und abruft, ich habe das Tutorial von durchlaufen Ottopresse
Ich habe einen Ordner erstellt in wp-content/plugin/
genannt new-setting-plugin
In dem Ordner befindet sich eine Datei mit dem Namen new-setting-plugin.php
so ist der gesamte Dateipfad wp-content/plugin/new-setting-plugin/new-setting-plugin.php
der Code der Datei new-setting-plugin.php ist am Ende der Tabelle angegeben. Nachdem ich den Code erstellt hatte, ging ich auf die Plugin-Seite von wp-admin und installierte das Plugin, es war alles in Ordnung.
Wenn ich jetzt auf die Schaltfläche “Einstellung speichern” drücke, wird die Meldung “Einstellung gespeichert” angezeigt, aber ich kann den Wert in den Eingabefeldern nicht sehen
Ich hänge meine Bilder an, um eine Vorschau dessen anzuzeigen, was auf meiner Plugin-Seite angezeigt wird
Wenn ich auf die Plugin-Seite gehe, sehe ich die folgenden Eingabefelder:
Jetzt gebe ich den Wert in Eingabefelder ein:
Als ich auf die Schaltfläche “Einstellung speichern” klickte, erhielt ich nach dem Aktualisieren der Seite die folgende Meldung
Hier ist mein Code
<?php
add_action('admin_menu', 'add_page');
if ( !function_exists( 'add_page' ) ) {
//function to add page under setting options in wordpress admin section
function add_page() {
add_options_page('New Setting Page', 'New Setting', 'manage_options', 'plugin', 'plugin_options_frontpage');
}
}
function plugin_options_frontpage() {
?>
<div class="wrap">
<?php screen_icon('users'); ?><h2>New Setting Page title</h2>
<form action="options.php" method="post">
<?php settings_fields('plugin_options'); ?>
<?php do_settings_sections('plugin'); ?>
<table class="form-table">
<tr valign="top">
<td colspan="2">
<input name="Submit" type="submit" class="button button-primary" value="<?php esc_attr_e('Save Changes'); ?>" />
</td>
</tr>
</table>
</form>
</div>
<?php
}
add_action('admin_init', 'plugin_admin_init');
function plugin_admin_init(){
register_setting( 'plugin_options', 'plugin_options', 'plugin_options_validate' );
add_settings_section('plugin_main', 'Main Settings', 'plugin_section_text', 'plugin');
add_settings_field('plugin_text_input1', 'Input 1', 'plugin_input1', 'plugin', 'plugin_main');
add_settings_field('plugin_text_input2', 'Input 2', 'plugin_input2', 'plugin', 'plugin_main');
}
function plugin_section_text() {
echo '<p>New input setting to be saved.</p>';
}
function plugin_input1() {
$options = get_option('plugin_options');
echo "<input id='plugin_input1' class="normal-text code" name="plugin_options[text_string]" size="30" type="text" value="{$options["text_string']}' />";
}
function plugin_input2() {
$options = get_option('plugin_options');
echo "<input id='plugin_input2' class="normal-text code" name="plugin_options[text_string]" size="30" type="text" value="{$options["text_string']}' />";
}
function plugin_options_validate($input) {
$options = get_option('plugin_options');
$options['text_string'] = trim($input['text_string']);
if(!preg_match('/^[a-z0-9]{32}$/i', $options['text_string'])) {
$options['text_string'] = '';
}
return $options;
}
?>
Was ist in meinem Code falsch, wie kann ich meinen Code korrigieren und gibt es eine Möglichkeit, den Wert von Eingabefeldern außerhalb des Felds auf derselben Seite in einer Tabelle anzuzeigen?