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

Временные опции в WordPress: наш лучший вариант?

39

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

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

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

Временные параметры: упражнение и представление с помощью элементарного наброска

Это небрежно? Может быть. У нас много других вариантов? Это зависит от того, сколько современных браузерных технологий мы хотим использовать. Хотя суть поста не в этом.

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

Наши варианты для временных вариантов

Лично у меня нет твердого мнения о том, плохо это или нет. Если это характер того, как работает фундамент, на котором я работаю над решением, то я соглашусь с ним.

Итак, во-первых, вот как я обычно делал это в WordPress:

1 Создание временной опции

Во-первых, я настроил функцию, привязанную к update_option. Это позволяет просматривать обновляемую опцию, ее старое значение и новое значение.

<?php

public function init() {

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

В функции я могу посмотреть, сохраняется ли конкретный параметр. Если нет, то я могу просто игнорировать это; в противном случае я могу взглянуть на него и начать работу с временным вариантом.

<?php

public function manage_temporary_option( $option_name, $old_value, $new_value) {

    if ('an_irrelevant_option' !== $option_name) {
        return;
    }

    $url = 'page-from-which-we-expect-to-come.php';
    if ($url === $_SERVER['REQUEST_URI']) {

        update_option(
            'our_temporary_option',
            $new_value
        );
    }
}

Но что будет во временном варианте?

2 Опция для временных опционов

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

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

Одна реализация, которую мы могли бы использовать, такова:

  1. Перед загрузкой страницы проверки проверьте, может ли пользователь оформить заказ в качестве гостя.
  2. Если это так, сохраните исходное значение параметра во временном параметре.
  3. Измените исходное значение, чтобы оно требовало создания учетной записи.
  4. После завершения процесса оформления заказа скопируйте значение из временной опции в исходную.
  5. Удалите временный вариант.

Это похоже на все упражнение в C, когда вам нужен указатель, чтобы поменять местами два числа (для тех, кто помнит или кто это делал).

Наш лучший вариант?

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

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

Итак, первоначальный вопрос остается: учитывая то, как работает WordPress, отсутствие сеансов и отсутствие гарантии определенных функций браузера, таких как localStorage, являются ли временные параметры в таблице параметров лучшим выходом?

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

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