Как настроить значения по умолчанию для плагина?
Как лучше всего настроить значения по умолчанию для плагина? Должен ли я просто вставить эти значения в таблицу 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...)
4 answers
Вы должны использовать значения по умолчанию во время извлечения данных. Никогда не вставляйте значения по умолчанию в базу данных. Значения по умолчанию - это значения по умолчанию. Параметры в БД переопределяют значения по умолчанию.
Как сделать значения по умолчанию для массива сериализованных параметров:
$defaults = array(
'default1' => '1',
'default2' => '2',
);
$options = wp_parse_args(get_option('plugin_options'), $defaults);
В дополнение к ответу Отто.
Если у вас есть массив многомерных параметров, и вы все еще хотите объединить его с массивом значений по умолчанию, используйте следующую функцию вместо 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);
Рекурсивная функция была найдена здесь .
Используйте 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' );