Cron – это стандартная утилита UNIX для выполнения запланированных задач в определенное время, дату или через интервал.

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

Что такое WordPress Cron?

У WordPress есть своей Сron для работы с такими задачам, как проверка обновлений, планирование публикации, очистка корзины и многие другие. Все задания WordPress Cron обрабатываются через WP-Cron.

По умолчанию WordPress поддерживает следующие временные интервалы:

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

				
					/******************************************
 * Новый, тридцатисекундный интервал для WP-Cron
 *****************************************/

// Добавляем фильтр
add_filter( 'cron_schedules', 'wplb_cron_30s' );

// Описываем функцию
function wplb_cron_30s( $schedules ) { 
    $schedules['30_seconds'] = array(
        'interval' => 30,
        'display'  => esc_html__( 'Каждые 30 секунд' )
    );
    return $schedules;
}
				
			

Управление Cron задачами в WordPress

Для мониторинга, отладки и управления запланированными действиями в WordPress можно использовать командную строку (WordPress CLI).

А для подавляющего большинства пользователей и разработчиков будет достаточно плагина WP crontrol

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

Создание Cron задач в WordPress (WP-Cron)

Самый надежный и простой метод:

				
					// Описываем функцию деактивации
function wplb_deactivate() {
    // Убираем задачу 'wplb_cron'
    wp_clear_scheduled_hook( 'wplb_cron' );
}

// Добавляем основное событие.
add_action('init', function() {

    // Создаём событие нашего планировщика
    add_action( 'wplb_cron', 'wplb_run_cron' );

    // Регистрируем событе на случай дективации
    register_deactivation_hook( __FILE__, 'wplb_deactivate' );

    // Добавляем наше событие в WP-Cron 
    if (! wp_next_scheduled ( 'wplb_cron' )) {
        wp_schedule_event( time(), '30_seconds', 'wplb_cron' );
    }

});

// Описываем функцию для планировщика
function wplb_run_cron() {
    // Функция будет выполняться 1 раз в тридцать секунд (Новый, тридцатисекундный интервал для WP-Cron мы добавили выше).
}
				
			
Человеко-понятное описание кода ?

Если активирована тема, в которую вставлен этот код и не существует запланированного действия с названием wplb_cron, то добавим wplb_cron. Функция wplb_run_cron будет выполняться каждые 30 секунд. В случае если пользователь сменил тему, то из планировщика убираем событие wplb_cron.

Если подумать, то всё достаточно просто, а если вы установили плагин WP Control, то вы увидите:

WordPress Cron (WP-Cron) – Планировщик заданий
WordPress Cron (WP-Cron) – Планировщик заданий

Одноразовые Cron задачи

В WordPress так же можно добавить событие, которое сработает всего один раз.

				
					// Создаём событие wplb_event
add_action( 'wplb_event', 'wplb_in_an_hour', 10, 3 );

// Описываем функцию для событие wplb_event
function wplb_in_an_hour( $arg1, $arg2, $arg3 ) {
    // Описание функции
}

// Добавляем событие wplb_event в планировщик (запустится через 1800 секунд от текущего времяни)
wp_schedule_single_event( time() + 1800, 'wplb_event', array( $arg1, $arg2, $arg3 ) );
				
			

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

Пример из реальной практики

Вводные данные:

Задача:

Автоматизировать процесс.

Решение:

Использование WP-Cron, как ежедневное запланированное задание, которое в свою очередь создавало несколько одноразовых заданий (запускались по очереди) в зависимости от объема новых, полученных через API, данных.

Мы постарались изложить всю информацию максимально доступно, но если у вас все равно остались вопросы, вы можете смело их нам задать, и мы обязательно поможем!

Спасибо.

Фильтр woocommerce_breadcrumb_home_url используется для замены ссылки главную страницу в хлебных крошках (событие woocommerce_breadcrumb).

В хлебных крошках мы заменили слово «Главная» на «Наш Магазин» и дополнительно стилизовали вывод с использованием фильтра woocommerce_breadcrumb_defaults.

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

Сделать это можно, добавив следующий код в functions.php вашей дочерней темы:

				
					/**
 * При нажатии на ссылку "Наш Магазин(Главная)" покупатель перейдет на страницу магазина, а не на главную страницу сайта.
 */
add_filter( 'woocommerce_breadcrumb_home_url', 'wpbl_breadcrumbs_home_url' );
function wpbl_breadcrumbs_home_url() {
    return wc_get_page_permalink( 'shop' ); // Устанавливаем ссылку на главную страницу магазина.
}
				
			

И как результат ссылка будет работать правильно:

Фильтр woocommerce_breadcrumb_home_url – Ссылка на главную страницу в хлебных крошках
Фильтр woocommerce_breadcrumb_home_url – Ссылка на главную страницу в хлебных крошках

Всё просто, a если у вас есть вопросы – спрашивайте в комментариях.

Спасибо.

Изначально фильтр woocommerce_breadcrumb_defaults применяется в событии woocommerce_breadcrumb и позволяет стилизовать внешний вид хлебных крошек в WooCommerce

Пример работы с фильтром

Добавляем следующий код в functions.php дочерней темы:

				
					/**
 * Стилизуем хлебные крошки в WooCommerce
 */

// Описиываем функцию для фильтра
function wpbl_breadcrumbs_style() {
    return array(
        'delimiter' => ' → ', // Меняем разделитель
        'wrap_before' => '<nav class="woocommerce-breadcrumb wpbl_custom_style" itemprop="breadcrumb">', // Добавляем CSS класс wpbl_custom_style
        'wrap_after' => '</nav>',
        'before' => '<span>',
        'after' => '</span>',
        'home' => _x( 'Наш Магазин', 'breadcrumb', 'woocommerce' ) // Меняем слово "Главная" на "Наш Магазин"
    );
}

// Добавляем сам фильтр
add_filter( 'woocommerce_breadcrumb_defaults', 'wpbl_breadcrumbs_style' );
				
			

Как видно мы добавили CSS класс wpbl_custom_style, а дочерние элементы обернули в <span>, давайте опишем новый класс:

				
					.wpbl_custom_style span {
    padding: 0px 3px
}
.wpbl_custom_style > span > a {
    border-bottom: 1px dashed #999;
    color: #333 !important;
}
.wpbl_custom_style span:last-child {
    padding: 5px 7px;
    border-radius: 3px;
    margin-left: 7px;
    background-color: #dff0d8;
    border-color: #d0e9c6;
    color: #3c763d;
}
				
			

И как результат получим:

Фильтр woocommerce_breadcrumb_defaults – Стилизация хлебных крошек в WooCommerc
Фильтр woocommerce_breadcrumb_defaults – Стилизация хлебных крошек в WooCommerc
Обратите внимание

Для замены ссылки на главную страницу в хлебных крошках используется фильтр woocommerce_breadcrumb_home_url

Всё достаточно просто, a если у вас есть вопросы – спрашивайте в комментариях.

Спасибо.

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

За отображение хлебных крошек на страницах WooCommerce отвечает зарегистрированное событие woocommerce_breadcrumb, за стилизацию – фильтр woocommerce_breadcrumb_defaults, а за замену ссылки на главную страницу – woocommerce_breadcrumb_home_url

Отображение хлебных крошек в WooCommerce по умолчанию – событие woocommerce_breadcrumb
Отображение хлебных крошек в WooCommerce по умолчанию – событие woocommerce_breadcrumb

Если ваша тема соответствует стандартам WooCommerce, то хлебный крошки должны отображаться на страницах архивов и на странице товара, так как событие woocommerce_breadcrumb входит в состав события woocommerce_before_main_content с приоритетом 20:

				
					// Вот так изначально должно срабатывать событие вывода хлебных крошек
add_action( 'woocommerce_before_main_content', 'woocommerce_breadcrumb', 20 );
				
			

Что можно сделать с самим событием?

Как и с любым другим событием, с woocommerce_breadcrumb можно:

Введите текст заголовка

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

				
					// Корзина
add_action( 'woocommerce_before_cart', 'woocommerce_breadcrumb', 10, 0 );

// Оформление заказа
add_action( 'woocommerce_before_checkout_form', 'woocommerce_breadcrumb', 0, 0 );
				
			
Хлебные крошки на странице корзины
Хлебные крошки на странице корзины
Обратите внимание!

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

А совсем отключить хлебные крошки можно так:

				
					// Отключаем вывод хлебных крошек (страницы архивов и страница товара)
remove_action( 'woocommerce_before_main_content', 'woocommerce_breadcrumb', 20 );
				
			

Если у вас есть вопросы – спрашивайте в комментариях.

Спасибо.

Благодаря зарегистрированному событию woocommerce_before_main_content можно вносить изменения в область до заголовка страниц WooCommerce.

Событие срабатывает только на страницах архивов, и на странице товара!

По умолчанию содержит два других события:

				
					// Выводит кусок верстки
add_action( 'woocommerce_before_main_content', 'woocommerce_output_content_wrapper', 10 );

// А затем, выводит хлебные крошки
add_action( 'woocommerce_before_main_content', 'woocommerce_breadcrumb', 20 );
				
			

Подробнее про событие вызова хлебных крошек – woocommerce_breadcrumb

Как изменить стандартное отображение?

Можно добавить свои событие или же отключить погрузку уже зарегистрированных:

				
					// Отключаем вывод хлебных крошек
remove_action( 'woocommerce_before_main_content', 'woocommerce_breadcrumb', 20 );

/************************
* Добавляем свое событие
************************/

// Описание функции
function wplb_say_hello() {
    echo '<div style="margin-bottom:10px; color: red"><em>? Привет!</em></div>';
}
// Добавление события
add_action( 'woocommerce_before_main_content', 'wplb_say_hello', 10 );
				
			

И как результат:

Добавляем свое событие к woocommerce_before_main_content
Добавляем свое событие к woocommerce_before_main_content

Почему событие может не срабатывать?

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

Всё достаточно просто, но если если остались вопросы – спрашивайте, обязательно ответим.

Спасибо.

В WooCommerce у есть функция woocommerce_page_title(), и её можно использовать для внесения изменений в заголовки различных страниц генерируемых плагином WooCommerce.

Примеры:

Вот несколько примеров фильтрации:

— Добавляем текстовую переменную к заголовками страниц архива:

				
					// Описываем функцию
function wplb_woo_archive_title( $page_title ) {
    if ( is_product_category() ) {
        $page_title = "Мой текст - " . $page_title;
    }
    return $page_title;
}

// Добавляем фильтр
add_filter( 'woocommerce_page_title', 'wplb_woo_archive_title', 10, 1 );
				
			

И как результат работы скрипта:

Пример использования фильтра для woocommerce_page_title
Пример использования фильтра для woocommerce_page_title

— Меняем заголовок страницы с результатами поиска товаров:

				
					// Описываем функцию
function wplb_woo_search_title( $page_title ) {
    if ( is_search() ) {
        if (! get_search_query()) {
            $page_title = sprintf( __( 'Результаты поиска: "Все товры"', 'woocommerce' ), get_search_query() );
        } else {
            $page_title = sprintf( __( 'Результаты поиска: "%s"', 'woocommerce' ), get_search_query() );
        }
    }
    return $page_title;
}

// Добавляем фильтр
add_filter( 'woocommerce_page_title', 'wplb_woo_search_title', 10, 1 );
				
			

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

Если у вас есть вопросы, то можете смело их нам задать, и мы обязательно поможем!

Спасибо.

Шаблон WordPress плагина (генератор)

Стандартизированная, организованная, объектно-ориентированная основа для создания высококачественных WordPress плагинов.

Раз уж вы попали на эту страницу значит у вас есть сайт на WordPress и вам наверняка знакомы возможности различных плагинов. Однако использование плагинов на сайте и создание собственного плагина – это две разные вещи. Давайте разбираться как создать плагин для WordPress!

Введение

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

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

Давайте начнем!

Четыре простых шагов для создания WordPress плагина

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

Шаг 1. Подберите имя для вашего плагина

Первый шаг в разработке плагина для WordPress – придумать официальное название для вашего плагина.

Рекомендуется проверить официальный репозиторий WordPress, чтобы убедиться, что нет других плагинов с тем именем, которое вы собираетесь использовать. Имейте в виду, что именем плагина будет то, что вы используете для папки плагина и файла PHP.

Называя плагин, убедитесь, что он уникален, конкретен и легко сокращается. #WordPress

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

Шаг 2. Создайте папку с плагином и PHP файл

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

Для начала перейдите в папку wp-content/plugins в каталоге где установлен WordPress. Создайте новую папку и назовите ее, используя имя плагина, используя дефисы для разделения слов. Например, my-super-plugin

Структура папок – Как создать плагин для WordPress
Структура папок – Как создать плагин для WordPress

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

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

Шаг 3. Создайте заголовок файла

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

Внутри файла добавьте следующий код:

				
					/**
* Plugin Name: Мой супер плагин
* Plugin URI: https://wordpresslab.ru/plugins/kak-sozdat-plagin-dlya-wordpress/
* Description: Этот плагин делает мир лучше!
* Version: 1.0.0
* Author: WordPress лаборатория
* Author URI: https://wordpresslab.ru/
* License: GPL2
*/
				
			

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

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

Когда вы закончите, сохраните изменения и ваш плагин будет добавлен на сайт. Чтобы убедиться, перейдите на панель администратора WordPress и перейдите в раздел «Плагины»:

Как создать плагин для WordPress – Активация плагина
Как создать плагин для WordPress – Активация плагина

Вы должны увидеть свой новый плагин в списке на этом экране. Конечно, впереди еще много работы.

Шаг 4: Добавьте функционал созданному плагину

Большинство плагинов работают с помощью хуков (hook), которые позволяют одному фрагменту кода взаимодействовать с другим. В WordPress есть два типа хуков: действия (actions) и фильтры (filters). Мы обсудим их более подробно в рамках отдельной статьи, пока лишь основы…

— Actions (действия)

Actions в WordPress относится к определенному действию, которое должно произойти в определенное время. С помощью действий вы можете добавить или изменить функциональность вашего плагина. Функции, которые связаны с действием, будут выполнены после его запуска.

Пример действия в WordPress – save_post. Действия определяются функцией do_action. Для них требуется параметр $tag (имя действия) и в некоторых случаях $args (дополнительные аргументы, расширяющие то, что делает действие).

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

Подробнее про экшен-хуки читайте тут.

— Filters (фильтры)

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

Фильтры в WordPress создаются с помощью функции apply_filters и определяются внутри функции. Для них требуются аргументы $tag (имя фильтра) и $value (отфильтрованное значение или переменная) с возможностью использования $var для дополнительных значений функции.

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

Подробнее про фильтр-хуки читайте тут.

Практические советы по созданию своих плагинов для WordPress

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

Основные советы

Структура и архитектура плагина

Четкая структура плагина облегчит жизнь вам, и всем тем кто в будущем будет работать с вашим кодом.

Архитектура или организация кода должна зависеть от размера вашего плагина.

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

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

Для больших плагинов с большим количеством кода создание классов является стандартом. Это поможет в организации кода и долгосрочном обслуживании плагина.

Готовый шаблон WordPress плагина

Вместо того, чтобы начинать с нуля для каждого нового плагина, вы можете начать с шаблона.

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

Шаблон WordPress плагина (генератор)

Стандартизированная, организованная, объектно-ориентированная основа для создания высококачественных WordPress плагинов.

Надеемся эта статья помогла вам чуть больше погрузиться в мир WordPress и вы разобрались как создать плагин для WordPress ?

Если у вас есть вопросы – спрашивайте в комментариях.

Спасибо.

Поможем вывести Ваш бизнес на новый уровень!

Проснувшись однажды утром после беспокойного сна, Грегор Замза обнаружил

Добро пожаловать!

Авторизуйтесь, чтобы продолжить

или

Забыли пароль? Восстановить

* Если аккунта у Вас еще нет, то он будет создан автоматически

Давайте составим техническое задание!
100% без риска
Нет обязательств по найму
Бесплатная оценка стоимости
Здравствуйте! Я асистент на основе искусственного интеллекта. Вы можете общаться со мной, как с человеком — задавайте вопросы, описывайте свои идеи и требования.

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

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