Как настроить значения по умолчанию для плагина?


Как лучше всего настроить значения по умолчанию для плагина? Должен ли я просто вставить эти значения в таблицу wp_options?

И... если это лучший способ сделать это, у меня есть еще один вопрос. Мои параметры перечислены в виде группы, которая в настоящее время выглядит следующим образом:

A:4:{s:26:"nc_location_drop_down_zoom";s:2:"14";s:17:"nc_location_width";s:3:"200";s:29:"nc_location_drop_down_maptype";s:7:"roadmap";s:11:"text_string";s:0:"";}

Это сериализованный массив? Как мне вставить такую вставку в таблицу? (Я понял, что это скорее вопрос sql...)

Author: redconservatory, 2011-08-16

4 answers

Используйте API настроек и сохраните ваши данные в одном варианте в виде массива, WordPress сериализует данные для вас.

 1
Author: Milo, 2011-08-16 22:53:59

Вы должны использовать значения по умолчанию во время извлечения данных. Никогда не вставляйте значения по умолчанию в базу данных. Значения по умолчанию - это значения по умолчанию. Параметры в БД переопределяют значения по умолчанию.

Как сделать значения по умолчанию для массива сериализованных параметров:

$defaults = array(
  'default1' => '1',
  'default2' => '2',
);
$options = wp_parse_args(get_option('plugin_options'), $defaults);
 15
Author: Otto, 2011-08-17 00:57:17

В дополнение к ответу Отто.

Если у вас есть массив многомерных параметров, и вы все еще хотите объединить его с массивом значений по умолчанию, используйте следующую функцию вместо wp_parse_args():

<?php
function meks_wp_parse_args( &$a, $b ) {
    $a = (array) $a;
    $b = (array) $b;
    $result = $b;
    foreach ( $a as $k => &$v ) {
        if ( is_array( $v ) && isset( $result[ $k ] ) ) {
            $result[ $k ] = meks_wp_parse_args( $v, $result[ $k ] );
        } else {
            $result[ $k ] = $v;
        }
    }
    return $result;
}

Например,

<?php
$defaults = array(
    'setting-1' => array(
        'option-1' => 1,
        'option-2' => 0,
    ),
    'setting-2' => 1
);

// Only variables are passed to the function by reference (Strict Standards warning)
$options = get_option('plugin_options');
$options = meks_wp_parse_args($options, $defaults);

Рекурсивная функция была найдена здесь .

 1
Author: Max Yudin, 2017-04-11 18:13:25

Используйте add_option. Если вы используете add_option, существующие параметры не будут обновлены, и будут выполнены проверки, чтобы убедиться, что вы не добавляете защищенный параметр WordPress.

Смотрите add_option в developer.wordpress.org

// Activation
function name_plugin_activation(){
    do_action( 'name_plugin_default_options' );
}
register_activation_hook( __FILE__, 'name_plugin_activation' );


// Set default values here
function name_plugin_default_values(){

    // Form settings
    add_option('name_form_to', '[email protected]');
    add_option('name_form_subject', 'New');


}
add_action( 'name_plugin_default_options', 'name_plugin_default_values' );
 1
Author: Remzi Cavdar, 2018-10-31 00:04:02