Intereting Posts
Как установить wp_options в functions.php для удаления основной страницы по умолчанию Заставить WordPress НЕ отображать выдержку вручную Запрос MySQL для таксономии-мета Добавление хороших параметров запроса Импортировать поддомен WordPress в основной домен WordPress Как авто gen. значения пользовательских сообщений в других настраиваемых типах сообщений в URL-адресе? Отдельный jQuery для индивидуальных комментариев? Добавить Google Analytics вручную или использовать подключаемый модуль? Как настроить сущность (post-type?) Со многими зависимыми объектами (больше post-types?) wp_update_post для определенного пользовательского типа сообщения get_template_directory () возвращает неверный адрес на VPS Как активировать поиск пользователей Получите значение из поля ввода и перейдите в update_meta_data как $ meta_value Заказать символ по заголовку сообщения хранить / кешировать ajax отправленные данные, чтобы избежать повторного запроса

Является ли серия обновлений update_option безопасными, эффективными?

Я закодировал функцию, которая устанавливает множество вариантов 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.