Я закодировал функцию, которая устанавливает множество вариантов WordPress последовательно.
Например:
update_option('option1', '0'); update_option('option2', '0'); update_option('option3', '0'); update_option('option4', '1'); update_option('option5', '1'); update_option('option6', '0'); update_option('option7', '1');
Я понимаю, что эта функция выполняет функцию изменения значений в базе данных. Я знаю, что при использовании get_option
имеет место кеширование, поэтому его можно считать безопасным. Однако, для update_option
, я не очень уверен.
Я не мог найти такую функцию, как update_option
которая принимает несколько параметров для обновления. Так ли это так хорошо для производительности? Есть ли еще более безопасный способ сделать это?
Использование отдельных имен опций для нескольких связанных опций не является идеальным.
Вместо этого сохраните параметры в одном ключе в виде сериализованного массива, если только не существует определенной причины. Таким образом, вам понадобится только один вызов add_option()
, update_option()
и get_option()
что будет означать, что количество запросов генерируется в целом, особенно (как вы отметили), при добавлении и обновлении значений.
// Example function where options are saved under the name wpse242105_options function wpse242105_options() { // Example settings array $settings = array ( 'option1' => '0', 'option2' => '0', 'option3' => '0', 'option4' => '1', 'option5' => '1', 'option6' => '0', 'option7' => '1', ); // Save all of the options under a single option key, wpse242105_options add_option( 'wpse242105_options', $settings ); // Using add_option() so option will be created if it doesn't exist. } add_action( 'init', 'wpse242105_options' );
После того, как параметры сохранены, вы можете получить их все за один вызов get_option()
.
$saved_options = get_option( 'wpse242105_options' ); print_r( $saved_options );
Вывод:
Array ( [option1] => 0 [option2] => 0 [option3] => 0 [option4] => 1 [option5] => 1 [option6] => 0 [option7] => 1 )
Обратите внимание, что WordPress будет обрабатывать сериализацию массива для вас. Параметр option_value
для wpse242105_options
будет выглядеть так в базе данных:
a:7:{s:7:"option1";s:1:"1";s:7:"option2";s:1:"0";s:7:"option3";s:1:"0";s:7:"option4";s:1:"1";s:7:"option5";s:1:"1";s:7:"option6";s:1:"0";s:7:"option7";s:1:"1";}
get_option()
превратит сериализованный массив обратно в массив PHP.