Пакетные решения для WordPress и WooCommerce от топовых Российских авторов!
Cron – это стандартная утилита UNIX для выполнения запланированных задач в определенное время, дату или через интервал.
Однако WordPress Cron немного отличается от стандартной утилиты, и поэтому, прежде чем углубляться в действия и процесс, вам необходимо понять, что такое Cron в WordPress и как он будет работать на вашем сайте.
У 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;
}
Для мониторинга, отладки и управления запланированными действиями в WordPress можно использовать командную строку (WordPress CLI).
А для подавляющего большинства пользователей и разработчиков будет достаточно плагина WP crontrol
Несмотря на то, что плагин позволяет создавать задания через интерфейс, мы его используем только для мониторинга и отладки.
Самый надежный и простой метод:
// Описываем функцию деактивации
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 так же можно добавить событие, которое сработает всего один раз.
// Создаём событие 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' ); // Устанавливаем ссылку на главную страницу магазина.
}
И как результат ссылка будет работать правильно:
Всё просто, a если у вас есть вопросы – спрашивайте в комментариях.
Спасибо.
Изначально фильтр woocommerce_breadcrumb_defaults применяется в событии woocommerce_breadcrumb и позволяет стилизовать внешний вид хлебных крошек в WooCommerce
Добавляем следующий код в functions.php дочерней темы:
/**
* Стилизуем хлебные крошки в WooCommerce
*/
// Описиываем функцию для фильтра
function wpbl_breadcrumbs_style() {
return array(
'delimiter' => ' → ', // Меняем разделитель
'wrap_before' => '',
'before' => '',
'after' => '',
'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_home_url
Всё достаточно просто, a если у вас есть вопросы – спрашивайте в комментариях.
Спасибо.
Внешний вид хлебных крошек может изменяться в зависимости от темы, которую вы используете для своего интернет магазина на WordPress.
За отображение хлебных крошек на страницах WooCommerce отвечает зарегистрированное событие woocommerce_breadcrumb, за стилизацию – фильтр woocommerce_breadcrumb_defaults, а за замену ссылки на главную страницу – woocommerce_breadcrumb_home_url
Если ваша тема соответствует стандартам 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 '? Привет!';
}
// Добавление события
add_action( 'woocommerce_before_main_content', 'wplb_say_hello', 10 );
И как результат:
События могут не срабатывать только если в теме для вашего интернет-магазина были переписаны стандартные шаблоны и авторы темы принципиально не используют функции, которые доступны в 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 );
И как результат работы скрипта:
// Описываем функцию
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, чтобы убедиться, что нет других плагинов с тем именем, которое вы собираетесь использовать. Имейте в виду, что именем плагина будет то, что вы используете для папки плагина и файла PHP.
Вы также можете использовать сокращенную версию названия в качестве префикса, чтобы избежать конфликтов имен (которые мы обсудим позже).
Прежде всего, вашему плагину нужно где-то жить. Поэтому после того, как вы выберете имя для своего плагина, следующим шагом будет создание для него папки.
Для начала перейдите в папку wp-content/plugins в каталоге где установлен WordPress. Создайте новую папку и назовите ее, используя имя плагина, используя дефисы для разделения слов. Например, my-super-plugin
После того, как вы создали папку с плагинами, следующим шагом будет создание внутри нее файла PHP.
В зависимости от того, насколько сложным будет ваш плагин, он может в конечном итоге содержать один файл PHP или несколько файлов.
После того как вы создадите основной файл плагина, пора добавить заголовок файла. По сути, это комментарий блока 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 и перейдите в раздел «Плагины»:
Вы должны увидеть свой новый плагин в списке на этом экране. Конечно, впереди еще много работы.
Большинство плагинов работают с помощью хуков (hook), которые позволяют одному фрагменту кода взаимодействовать с другим. В WordPress есть два типа хуков: действия (actions) и фильтры (filters). Мы обсудим их более подробно в рамках отдельной статьи, пока лишь основы…
Actions в WordPress относится к определенному действию, которое должно произойти в определенное время. С помощью действий вы можете добавить или изменить функциональность вашего плагина. Функции, которые связаны с действием, будут выполнены после его запуска.
Пример действия в WordPress – save_post. Действия определяются функцией do_action. Для них требуется параметр $tag (имя действия) и в некоторых случаях $args (дополнительные аргументы, расширяющие то, что делает действие).
Ядро WordPress уже содержит десятками предопределенных действий. Однако вы также можете создать свои собственные. В любом случае, при создании плагина для WordPress вы будете использовать do_action для установки значений к подключенной функции. Затем функция add_action будет использоваться для подключения этой функции к определенному действию.
Подробнее про экшен-хуки читайте тут.
Фильтры WordPress – это хуки, которые принимают одну переменную или серию переменных, а затем отправляют их обратно после того, как они были изменены. Вкратце, фильтры позволяют вам изменять контент, отображаемый для пользователей.
Фильтры в WordPress создаются с помощью функции apply_filters и определяются внутри функции. Для них требуются аргументы $tag (имя фильтра) и $value (отфильтрованное значение или переменная) с возможностью использования $var для дополнительных значений функции.
Вы можете создать свой собственный фильтр с помощью хука apply_filters. Затем для его выполнения вы можете использовать функцию add_filter. Это позволит вам подключить к фильтру определенную функцию, чтобы вы могли манипулировать переменной и возвращать ее.
Подробнее про фильтр-хуки читайте тут.
Важно понимать, что вы не первый, кто создает свой собственный WordPress плагин. До вас были десятки тысяч и столько же будет после вас. В связи с этим стоит обратить внимание на передовые методики. Это поможет обеспечить плавный процесс разработки и повысить эффективность вашего плагина.
Четкая структура плагина облегчит жизнь вам, и всем тем кто в будущем будет работать с вашим кодом.
Архитектура или организация кода должна зависеть от размера вашего плагина.
Проснувшись однажды утром после беспокойного сна, Грегор Замза обнаружил, что он у себя в постели превратился в страшное насекомое.
Для небольших плагинов которые имеют ограниченное взаимодействие с ядром WordPress, темами или другими подключаемыми модулями, создание сложных классов не принесет особой пользы.
Для больших плагинов с большим количеством кода создание классов является стандартом. Это поможет в организации кода и долгосрочном обслуживании плагина.
Вместо того, чтобы начинать с нуля для каждого нового плагина, вы можете начать с шаблона.
Одно из преимуществ использования шаблона – согласованность ваших собственных плагинов. Плагины, созданные по шаблонам, также облегчают жизнь другим людям!
Стандартизированная, организованная, объектно-ориентированная основа для создания высококачественных WordPress плагинов.
Надеемся эта статья помогла вам чуть больше погрузиться в мир WordPress и вы разобрались как создать плагин для WordPress ?
Если у вас есть вопросы – спрашивайте в комментариях.
Спасибо.
Авторизуйтесь, чтобы продолжить *
Пакетные решения для WordPress и WooCommerce
Ещё один сайт на WordPress 💛