Wordpress get_option无效

时间:2017-10-04 05:32:33

标签: php arrays wordpress forms function

我希望在此answer之后从get_option获取数组值以添加更多,但它不适用于我。我找不到我出错的地方。它在我不使用数组时有效。

工作代码(不带数组):

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
}

然后我想将数组用于get_option。我按照上面提到的答案,但它给了我错误。请参阅下面的代码。

不工作的代码(带数组):

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
}

我错过了什么吗?任何帮助深表感谢。提前谢谢。

1 个答案:

答案 0 :(得分:0)

删除以下行中的 esc_attr 功能。此函数将字符串作为输入并返回字符串。由于处理数组会导致错误。

$new_option = get_option('option2');

您应该使用实际输出值的函数。

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

希望它有所帮助。 :)