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

Виджеты WordPress: рефакторинг, часть 5

28

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

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

В частности, вот где мы остановились:

Как упоминалось ранее в посте, нам нужно добавить это в начальную загрузку плагина. Однако для этого нам нужно определить наш собственный фильтр, чтобы мы могли легко передать реестр остальной части плагина (когда придет время сделать это).

Итак, в этом посте мы сосредоточимся именно на этом.

Шаблон виджета WordPress: рефакторинг, часть 5

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

Однако для этого предполагается, что вы знаете, как определить свои фильтры. В WordPress мы постоянно используем действия и фильтры.

Однако особенность этих хуков в том, что они уже определены. Итак, как мы определяем наш фильтр?

Давайте посмотрим, как сделать именно это.

1 Определение нашего фильтра

Во-первых, нам нужно понять несколько концепций:

  • что за фильтр,
  • как добавить фильтр,
  • как ввести наш реестр в фильтр
  • как получить класс из фильтра.

К счастью, все вышесказанное легко объяснимо.

Что такое фильтр?

Проще говоря, хуки позволяют нам обращаться к WordPress в определенное время во время выполнения программы. Действия обычно зарезервированы для поведения; Фильтры зарезервированы для данных.

Кроме того, фильтры позволяют нам работать с конкретными данными в приложении — это могут быть уже существующие данные или даже новые данные. И в нашем случае это будет класс Registry, содержащий ссылки на другие данные.

Добавление фильтра

Добавить фильтр легко. Он состоит из трех частей:

  1. вызов add_filter ,
  2. определение уникального идентификатора для фильтра,
  3. передача информации в фильтр, который может быть возвращен всякий раз, когда он вызывается.

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

Виджеты WordPress: рефакторинг, часть 5

В любом случае, добавление фильтра выполняет простую задачу:

Привяжите функцию или метод к определенному действию фильтра.

Это означает, что нам нужно определить метод с нашим идентификатором. Из-за особенностей PHP нам не нужно использовать отдельную функцию.

Виджеты WordPress: рефакторинг, часть 5

Вместо этого мы можем использовать анонимную функцию.

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

Анонимная функция, которую мы собираемся определить, будет принимать ссылку на плагин в качестве аргумента, а затем возвращать ее всякий раз, когда вызывается фильтр (что будет показано далее в этой статье).

Передача информации в наш фильтр

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

Итак, в основной файл плагина, то есть файл wordpress-widget-boilerplate.php, мы добавляем следующие строки кода :

<?php

namespace WordPressWidgetBoilerplate;

use WordPressWidgetBoilerplateUtilitiesRegistry;

// More to come...

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

<?php

// Setup a filter so we can retrieve the registry throughout the plugin.
$registry = new Registry();
add_filter('wpWidgetRegistry', function() use ($registry) {
    return $registry;
});

Обратите внимание, что когда вы пытаетесь активировать плагин, он не активируется и выдает ошибку. Это из-за отсутствия автозагрузчика, о котором мы поговорим в следующем посте.

2 Получение нашего реестра

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

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

<?php

// Retrieve the registry anywhere in the plugin.
$registry = apply_filters('wpWidgetRegistry', null);

Вот и все. Легко, верно? Пока все правильно добавлено в реестр — что скоро будет рассмотрено — мы сможем получить доступ ко всем из них через уникальные идентификаторы, которые мы использовали в предыдущем посте.

Автозагрузчик

Теперь мы начинаем использовать пространства имен и использовать другие классы. Это означает, что нам нужно будет использовать автозагрузчики.

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

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

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