2017-10-04 2 views
0

Ich möchte Array-Wert von get_option folgenden answer, um mehr hinzuzufügen, aber es funktioniert nicht für mich. Ich kann nicht finden, wo ich falsch gelaufen bin. Es funktioniert, wenn ich nicht Array verwende.Wordpress get_option funktioniert nicht

Arbeitscode (ohne Array):

add_action('admin_init', function() { 
    register_setting('my-test', 'option1'); 
    register_setting('my-test', 'option2'); 
    register_setting('my-test', 'option3'); 
}); 

function my_function() { 
?> 
    <div class="wrap"> 
    <h1>Dashboard</h1> 
    <form action="options.php" method="post"> 
    <?php 
    settings_fields('my-test'); 
    do_settings_sections('my-test'); 
     ?> 
     <input type="text" name="option1" value="<?php echo esc_attr(get_option('option1')); ?>"" /> 
     <?php submit_button(); ?> 
     </form> 
    </div> 
    <?php 
} 

Dann möchte ich Array verwenden, um get_option. Ich folgte der Antwort, die ich oben erwähnte, aber es gibt mir einen Fehler. Bitte beachten Sie diesen Code unten.

Nicht-Code arbeiten (mit Array):

add_action('admin_init', function() { 
    register_setting('my-test', 'option1'); 
    register_setting('my-test', 'option2'); 
    register_setting('my-test', 'option3'); 
}); 

function my_function() { 
$new_option = esc_attr(get_option('option2')); 
?> 
    <div class="wrap"> 
    <h1>Dashboard</h1> 
    <form action="options.php" method="post"> 
    <?php 
    settings_fields('my-test'); 
    do_settings_sections('my-test'); 
     ?> 
     <input type="text" name="option1" value="<?php echo esc_attr(get_option('option1')); ?>"" /> 
     <input type="text" name="option2[first]" value="<?php echo $new_option['first']; ?>" /> 
     <input type="text" name="option2[second]" value="<?php echo $new_option['second']; ?>" /> 
     <?php submit_button(); ?> 
     </form> 
    </div> 
    <?php 
} 

bin ich etwas fehlt? Jede Hilfe wird sehr geschätzt. Danke im Voraus.

Antwort

0

Entfernen esc_attr Funktion in der unteren Zeile. Diese Funktion nimmt String als Eingabe und gibt String zurück. Da Sie mit Array arbeiten, wird dies zu einem Fehler führen.

$new_option = get_option('option2'); 

Sie sollten die Funktion verwenden, in der Sie den Wert tatsächlich ausgeben.

<input type="text" name="option2[first]" value="<?php echo esc_attr($new_option['first']); ?>" /> 

Ich hoffe, es hilft. :)

+1

Sorry für die späte Antwort. Es funktioniert jetzt, nachdem ich den esc_attr entfernt habe. –