it-swarm.com.de

Das Kontrollkästchen für die Seite mit benutzerdefinierten Optionen wird trotz der Arbeit mit Text nicht gespeichert

Hier ist mein Code:

add_action('admin_menu', 'test_plugin_setup_menu');                                                                                                     /**/
function test_plugin_setup_menu(){                                                                                                                      /**/
        add_submenu_page('options-general.php','Forhandler options side','Forhandler Options', 'manage_options', 'mine-første-options', 'test_init');   /**/
}                                                                                                                                                       /**/
function test_init(){                                                                                                                                   /**/
        //echo "<h1>Hello World!</h1>";
        ?>
        <div>
        <h1>Codehero Dealers</h1>
        <form action="options.php" method="post">
        <?php settings_fields('mine_plugin_options'); ?>
        <?php do_settings_sections('mine-første-options'); ?>

        <input name="Submit" type="submit" value="<?php esc_attr_e('Save Changes'); ?>" />
        </form>
        </div>
        <?php
}
function mine_plugin_section_text() {
    echo '<p>Her Finder du indstillinger til forhandler delen.</p>';
}
// add the admin settings and such
add_action('admin_init', 'mine_plugin_admin_init');
function mine_plugin_admin_init(){
register_setting( 'mine_plugin_options', 'mine_plugin_options', 'mine_plugin_options_validate' );
add_settings_section('mine_plugin_main', 'Main Settings', 'mine_plugin_section_text', 'mine-første-options');
add_settings_field('mine_plugin_text_string', 'Forhandler checkout indstilling', 'mine_plugin_setting_string', 'mine-første-options', 'mine_plugin_main');
}


function mine_plugin_setting_string() {

$options = get_option('mine_plugin_options');
echo "<input id='plugin_checkbox' name='mine_plugin_options[plugin_checkbox]' type='checkbox' value='true' />";

}

// validate our options
function mine_plugin_options_validate($input) {
    /*
$options = get_option('mine_plugin_options');
$options['text_string'] = trim($input['text_string']);
if(!preg_match('/^[a-z0-9]{}$/i', $options['text_string'])) {
$options['text_string'] = '';
}
return $options; */
}

Die Einstellungen wurden gespeichert, das Kontrollkästchen wird jedoch wieder deaktiviert.

Ich bin ziemlich neu in der ganzen Sache "Erstelle deine eigenen Optionen", daher wäre jede Hilfe dankbar. Ich habe dieses Tutorial befolgt, um den Code zu erstellen: http://ottopress.com/2009/wordpress-settings-api-tutorial/

1
Kristoffer M

Kommentieren Sie Ihren Validierungscode nicht aus. Denken Sie daran, dass Sie ihn zur Validierung der Daten verwenden. Daher wird im Moment nichts zurückgegeben, und es wird nichts gespeichert. Versuchen Sie Folgendes:

add_action('admin_bar_menu', 'make_parent_node', 999);

function make_parent_node($wp_admin_bar) {
    $args = array(
        'id' => 'test1234', // id of the existing child node (New > Post)
        'title' => 'test', // alter the title of existing node
        'parent' => 'new-content', // set parent to false to make it a top level (parent) node
        'href' => admin_url('admin.php?page=enter_timesheet')
    );
    $wp_admin_bar->add_node($args);
}

add_action('admin_menu', 'test_plugin_setup_menu');

function test_plugin_setup_menu() { /**/
    add_submenu_page('options-general.php', 'Forhandler options side', 'Forhandler Options', 'manage_options', 'mine-første-options', 'test_init');
}

/**/

function test_init() { /**/
    //echo "<h1>Hello World!</h1>";
    ?>
    <div>
        <h1>Codehero Dealers</h1>
        <form action="options.php" method="post">
            <?php settings_fields('mine_plugin_options'); ?>
            <?php do_settings_sections('mine-første-options'); ?>

            <input name="Submit" type="submit" value="<?php esc_attr_e('Save Changes'); ?>" />
        </form>
    </div>
    <?php
}

function mine_plugin_section_text() {
    echo '<p>Her Finder du indstillinger til forhandler delen.</p>';
}

// add the admin settings and such
add_action('admin_init', 'mine_plugin_admin_init');

function mine_plugin_admin_init() {
    register_setting('mine_plugin_options', 'mine_plugin_options', 'mine_plugin_options_validate');

    add_settings_section('mine_plugin_main', 'Main Settings', 'mine_plugin_section_text', 'mine-første-options');

    add_settings_field('mine_plugin_checkbox', 'Forhandler checkout indstilling', 'mine_plugin_setting_string', 'mine-første-options', 'mine_plugin_main');

}

function mine_plugin_setting_string() {

    $options = get_option('mine_plugin_options');

    echo "<input id='mine_plugin_checkbox' name='mine_plugin_options[checkbox]' type='checkbox' value='1'" . checked( 1, $options['checkbox'], false ) . " />";
}

// validate our options
function mine_plugin_options_validate($input) {

    $newinput['checkbox'] = trim($input['checkbox']);
    return $newinput;
}

Anstatt die Option zu lesen, eine Bedingung einzurichten und zu prüfen, ob ein Wert vorhanden oder nicht vorhanden ist, können wir die Funktion WordPress checked verwenden.

1
David Lee

Anscheinend fehlt Ihnen der checked="checked"-Wert in Ihrer Eingabe ...

Versuchen Sie so etwas:

$options = get_option('mine_plugin_options');
$checked = ($options == 'true' ? ' checked="checked"' : '');
echo "<input id='plugin_checkbox' name='mine_plugin_options[plugin_checkbox]' type='checkbox' value='true' {$checked} />";
0
PSD to Final