Неопределенный индекс при установке переменных пользовательских настроек WordPress? - PullRequest
0 голосов
/ 11 июня 2019

У меня настроены мои собственные параметры, как это ...

function my_options_init(){
    register_setting(
    'myoptions',
    'myoptions',
    'myoptions_validate'
    );
}
add_action( 'admin_init', 'my_options_init' );

... и я привык настраивать переменные на моей странице пользовательских настроек таким образом ...

$myoptions = get_option( 'myoptions' );
$foo = $myoptions['foo']; 

Но при включенной отладке выдается ошибка:

Notice: Undefined index: foo

Решение, как я понимаю, состоит в том, чтобы сделать это ...

if(isset($myoptions['foo'])) {
    $foo = $myoptions['foo']; 
}

.., что устраняет ошибку.

Проблема в том, что у меня есть много переменных, которые я хочу использовать в своем плагине, и кажется, что каждый раз, когда мне нужно использовать переменную, приходится выполнять много ненужной работы.

Тогда я наткнулся на это в другой теме:

"... чтобы не включать этот чек каждый раз, когда вы получаете настройка от $ myoptions - будет для просмотра вашего myoptions () и убедитесь, что она возвращает массив, который включает в себя все настройки, включая значения по умолчанию для тех настройки, которые еще не сохранены в базе данных. "

Мой вопрос: как бы я поступил так?

1 Ответ

0 голосов
/ 11 июня 2019

Вы можете установить функцию для значений по умолчанию.Затем, когда вы выбираете опцию плагина, вы можете выбрать опции со значениями по умолчанию.После этого, даже если в базе данных нет опций, функция получит значение по умолчанию.Так что никакого уведомления PHP.Пожалуйста, проверьте следующий пример.

function wpso_get_default_options() {
    // Default plugin options.
    $default = array(
        'foo' => 1,
        'bar' => 'left',
        );
    return $default;
}

function wpso_get_plugin_option( $key ) {
    $defaults = wpso_get_default_options();
    $plugin_options = get_option( 'myoptions' );
    $plugin_options = wp_parse_args( $plugin_options, $defaults );

    $value = null;
    if ( isset( $plugin_options[ $key ] ) ) {
        $value = $plugin_options[ $key ];
    }
    return $value;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...