✅ Новости WEB и WordPress, темы, плагины. Здесь мы делимся советами и лучшими решениями для веб-сайтов.

Использование хука WordPress для обновления параметров

27

Обновить параметры в панели администратора WordPress очень просто, верно? Это вопрос заполнения текстового поля, установки флажка или переключения переключателя, а затем нажатия кнопки «Сохранить».

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

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

Специально для этого есть действие, которое делает это довольно легко.

Крюк для обновления опций

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

Кроме того, есть следующие соображения:

  1. Была ли включена рассматриваемая опция?
  2. Если да, то был ли установлен этот параметр (при условии, что это флажок)?
  3. Если нет, есть ли у вас план действий в этом случае?

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

В моем примере я буду использовать объектно-ориентированное программирование, но это можно сделать и в процедурном программировании.

Пример

Допустим, у вас есть параметр с именем user_is_disguised, и у вас есть другое значение в базе данных с именем user_is_superman.

Всякий раз, когда для user_is_disguised установлено значение false, для user_is_superman должно быть установлено значение false. И затем, когда для user_is_disguised установлено значение false, для user_is_superman должно быть установлено значение true.

В конечном итоге ценности меняются местами. Вот пример, как это сделать. Во- первых, нам нужно настроить хук :

<?php

/**
 * Initializes the defined actions.
 */
public function init() {

  add_action(
    'update_option',
    array( $this, 'toggle_other_option' ),
    10, 3
  );
}

Затем нам нужно реализовать функцию замены значений:

<?php

/**
 * If the given option_name is `user_is_disguised`, then toggles another option
 * in the database - `user_is_superman` - based on the specified values.
 *
 * @param string $option_name The name of the value being updated.
 * @param mixed  $old_value   The previous value of the option before updating it.
 * @param mixed  $new_value   The value of the option now that it's been updated.
 */
public function toggle_other_option( $option_name, $old_value, $new_value) {

  // If 'user_is_disguised' is not being changed, then don't worry about it.
  if (0 !== strcasecmp( $option_name, 'user_is_disguised')) {
   return; 
  }

  /* If 'user_is_disguised' is being set, then remove the Superman value; otherwise,
   * set it to true (but don't worry about autoloading it).
   */
  if ('1' === $new_value) {
    delete_option( 'user_is_superman' );
  } else {
    update_option( 'user_is_superman', true, false );
  }
}

И это должно позаботиться об этом.

Примечание об аргументах

Обратите внимание, что обратный вызов принимает три аргумента (которые также определены в документации, указанной выше). Они полезны в других, менее надуманных реализациях.

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

Источник записи: tommcfarlin.com

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