✅ WEB і WordPress новини, теми, плагіни. Тут ми ділимося порадами і кращими рішеннями для сайтів.

Використання хука WordPress для оновлення параметрів

12

Оновити параметри в адміністраторі WordPress просто, чи не так? Потрібно заповнити текстове поле, поставити прапорець або змінити перемикач, а потім натиснути «Зберегти».

Але припустімо, що вам потрібно налаштувати хук, який спрацьовує, а також оновлює вторинну пов’язану опцію щоразу, коли її перемикають.

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

Для цього існує спеціальна дія, яка робить це досить простим.

Гачок для оновлення параметрів

Перш ніж приступати до будь-якого коду, як це зробити, скажіть, що даний update_option спрацював. Зробивши, вам потрібно буде налаштувати зворотний виклик, який запускатиметься щоразу, коли встановлено цей параметр.

Крім того, є такі міркування:

  1. Чи перемикали спірну опцію?
  2. Якщо так, чи встановлено цей параметр (якщо це був прапорець)?
  3. Якщо ні, то чи є у вас план, як вирішити цю справу?

Якщо припустити, що все вищесказане було з’ясовано, вам знадобиться функція для визначення дії та функція, яка реалізує зворотний виклик. У моєму прикладі я буду використовувати об’єктно-орієнтоване програмування, але це також можна зробити в процедурному програмуванні.

У моєму прикладі я буду використовувати об’єктно-орієнтоване програмування, але це також можна зробити в процедурному програмуванні.

Приклад

Скажімо, у вас є параметр під назвою user_is_disguised, і у вас є інше значення в базі даних під назвою user_is_superman.

Щоразу, коли для параметра user_is_disguised встановлено значення still, для параметра 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, щоб покращити ваш досвід. Ми припустимо, що з цим все гаразд, але ви можете відмовитися, якщо захочете. Прийняти Читати далі