Speichern und Abrufen von benutzerdefinierten Plugin-Optionseingaben

Lesezeit: 4 Minuten

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:
Neue Einstellungsseite

Jetzt gebe ich den Wert in Eingabefelder ein:
Eingabe der Felder

Als ich auf die Schaltfläche “Einstellung speichern” klickte, erhielt ich nach dem Aktualisieren der Seite die folgende Meldung
Seite nach der Übermittlungsaktion

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?

Sie werden sie dort nicht sehen. Sie müssen get_options.

Für Ihren Code, wenn Sie dies tun var_export( get_option('plugin_options') ); Sie sehen diese gespeicherten Einstellungen/Werte.

Überprüfen Sie die Validierungskriterien.

preg_match('/^[a-z0-9]{32}$/i', $options['text_string'])

Kommentieren Sie den Code in der Validierungsfunktion und testen Sie ihn.

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;
}

Sie müssen den ‘Namen’ der Eingänge ändern:

function manage_lists_cc_input1() {
    $options = get_option('manage_lists_cc_options');
    echo "<input id='manage_lists_cc_input1' class="normal-text code" name="manage_lists_cc_options[0]" size="30" type="text" value="{$options["text_string_0']}' />";
}

function manage_lists_cc_input2() {
    $options = get_option('manage_lists_cc_options');
    echo "<input id='manage_lists_cc_input2' class="normal-text code" name="manage_lists_cc_options[1]" size="30" type="text" value="{$options["text_string_1']}' />";

Und ändern Sie einfach das Validierungsskript, um die Werte zu erhalten (dies ist ein einfaches Beispiel ohne Validierung):

function manage_lists_cc_options_validate($input) {
    $options['text_string_0'] = $input[0];
    $options['text_string_1'] = $input[1];
    return $options;
}

1434720cookie-checkSpeichern und Abrufen von benutzerdefinierten Plugin-Optionseingaben

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy