Пакетные решения для WordPress и WooCommerce от топовых Российских авторов!
Каждый владелец или разработчик интернет-магазина на WordPress, пытается подстроить его под свои нужды. В этом руководстве мы будет редактировать страницу товара в WooCommerce. Задача это не тривиальная и есть всего два правильных метода:
Если вы когда-либо работали с кодом WordPress сайта, то наверняка, много раз встречали слово «Хук» или «Зацепка», а если вы разработчик, то использование хуков должно стать вашим основным методом.
Плагин WooCommerce, как и сам WordPress, имеет огромное количество предопределенных функций. С помощью хуков вы можете кардинально изменить поведение этих функций и заменить существующее значение, тем самым настроив WooCommerce в соответствии с вашими потребностями!
В рамках этого руководства и опираясь на то, что 99% посетители этой страницы являются разработчиками, мы не будет описывать все преимущества работы хуками по сравнению с шаблонами, а будем редактировать страницу товара и рассмотрим все доступные для этой страницы WooCommerce хуки.
На карте показаны все доступные для редактирования страницы товара хуки. Актуально если у вас WooCommerce версии 4.4+.
События, помеченные синим и зеленым цветом можно хукать, а вот помеченные желтым – нет. Но это не значит, что на эти события нельзя повлиять. Их можно переписать, удалить или заменить своими собственными событиями.
В качестве примера давайте выведем дополнительный HTML в woocommerce_single_product_summary:
add_action( 'woocommerce_single_product_summary', 'wpbl_exmaple_hook', 20);
function wpbl_exmaple_hook(){
echo '';
}
И в результате получим:
Как видно из кода, использовался приоритет равный 20, если значение изменить, то можно поменять позицию.
Указав для хука приоритет, равный 10, мы сдвинем наш блок под заголовок товара:
А установив значение 0, блок будет самым первым:
Двигаемся дальше и давайте рассмотрим все хуки, которые могут пригодится при редактировании страницы товара в WooCommerce.
Как вы уже поняли, WooCommerce использует свои собственные события, например, woocommerce_before_single_product_summary, используются для вывода базовой информации о товаре, состоящей из нескольких отдельных частей, которые можно модифицировать или удалять. И так с каждым, отдельно взятым, информационным блоком!
Давайте рассмотрим весь список!
// Первое событие - это вывод хлебных крошек:
add_action( 'woocommerce_before_main_content', 'woocommerce_breadcrumb', 20, 0 );
// Второе событие вывод боковой панели (Sidebar):
add_action( 'woocommerce_sidebar', 'woocommerce_get_sidebar', 10 );
// И последнее зарегистрированные событие в этом блоке - это создание области для отображения ошибок:
add_action( 'woocommerce_before_single_product', 'woocommerce_output_all_notices', 10 );
В качестве примера, давайте изменим отображение и работу хлебных крошек, сейчас у нас они выглядят так:
Давайте их хукнем ?
/**
* Меняем вывод хлебных крошек
*/
add_filter( 'woocommerce_breadcrumb_defaults', 'wpbl_breadcrumbs' );
function wpbl_breadcrumbs() {
return array(
'delimiter' => ' → ', // Меняем разделитель
'wrap_before' => '',
'before' => '',
'after' => '',
'home' => _x( 'Магазин', 'breadcrumb', 'woocommerce' ) // Меняем "Главная" на "Магазин"
);
}
/**
* При нажатии на ссылку "Магазин" покупатель перейдет на страницу магазина, а не на главную страницу сайта.
*/
add_filter( 'woocommerce_breadcrumb_home_url', 'wpbl_breadcrumb_home_url' );
function wpbl_breadcrumb_home_url() {
return wc_get_page_permalink( 'shop' );
}
И чуть-чуть стилизуем добавленный CSS класс wpbl_custom:
.wpbl_custom span {
padding: 0px 3px
}
.wpbl_custom > span > a {
border-bottom: 1px dashed #999;
color: #333 !important;
}
.wpbl_custom span:last-child {
padding: 5px 7px;
border-radius: 3px;
margin-left: 7px;
background-color: #dff0d8;
border-color: #d0e9c6;
color: #3c763d;
}
// Первым событием будет вывод значка "Распродажа"
add_action( 'woocommerce_before_single_product_summary', 'woocommerce_show_product_sale_flash', 10 );
// Второе событие отвечает за отображение товара
add_action( 'woocommerce_before_single_product_summary', 'woocommerce_show_product_images', 20 );
// Последнее зарегистрированное событие выводит галерею дополнительных изображений
add_action( 'woocommerce_product_thumbnails', 'woocommerce_show_product_thumbnails', 20 );
Для примера давайте добавим HTML блок под галерею изображений:
add_action( 'woocommerce_product_thumbnails', 'wpbl_thumbs', 30 );
function wpbl_thumbs() {
echo 'А вы знали, что мы можем помочь вам с выбором совершенно бесплатно? Звоните из любой точки России - 8(800)123-45-67';
}
И как результат:
На этом этапе, скорее всего уже понятен принцип работы с хуками в WooCommerce.
Дальше просто перечислим оставшиеся события, а если будет нужно дополним статью примерами.
События и хуки страницы товара в WooCommerce в правой колонке:
/**
* Права колонка. Базовая информация о товаре
**/
// Вывод заголовка товара
add_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_title', 5 );
// Вывод рейтинга
add_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_rating', 10 );
// Отображение цены
add_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_price', 10 );
// Короткое описание
add_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_excerpt', 20 );
/**
* Права колонка. Процесс добавления в корзину
**/
// Событие срабатывает до отображение формы
do_action( 'woocommerce_before_add_to_cart_form' );
// Событие ДО кнопки "В корзину"
do_action( 'woocommerce_before_add_to_cart_button' );
// Запуск событие по добавлению простого товара в корзину.
add_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_add_to_cart', 30 );
// Выводит область добавления "Простого" товара в корзину
add_action( 'woocommerce_simple_add_to_cart', 'woocommerce_simple_add_to_cart', 30 );
// Выводит область добавления "Сгруппированного" товара в корзину
add_action( 'woocommerce_grouped_add_to_cart', 'woocommerce_grouped_add_to_cart', 30 );
// Выводит область добавления "Вариативного" товара в корзину
add_action( 'woocommerce_variable_add_to_cart', 'woocommerce_variable_add_to_cart', 30 );
// Выводит область добавления "Внешнего/Партнёрского" товара в корзину
add_action( 'woocommerce_external_add_to_cart', 'woocommerce_external_add_to_cart', 30 );
// Отображает информацию о выбранной вариации
add_action( 'woocommerce_single_variation', 'woocommerce_single_variation', 10 );
// Выводит область добавления "Вариации" в корзину
add_action( 'woocommerce_single_variation', 'woocommerce_single_variation_add_to_cart_button', 20 );
// Событие ДО вывода поля кол-во
do_action( 'woocommerce_before_quantity_input_field' );
// Событие ПОСЛЕ вывода поля кол-во
do_action( 'woocommerce_after_quantity_input_field' );
// Событие ПОСЛЕ кнопки "В корзину"
do_action( 'woocommerce_after_add_to_cart_button' );
// Событие ПОСЛЕ формы добавления товара в корзину
do_action( 'woocommerce_after_add_to_cart_form' );
/**
* Права колонка. Мета данные
**/
// События отображения мета данных товара
add_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_meta', 40 );
do_action( 'woocommerce_product_meta_start' );
do_action( 'woocommerce_product_meta_end' );
Вот так сейчас у нас выглядит страница товара, давайте посмотрим, что можно сделать с событиями для которых нет хуков (помеченные желтым):
Допустим мы хотим, чтобы рейтинг товара отображался выше заголовка. В этом случае нам нужно удалить стандартное событие вывода рейтинга, а затем добавить новое, но с другим приоритетом:
// Удаляем вызываемое по умолчанию событие
remove_action('woocommerce_single_product_summary','woocommerce_template_single_rating', 10);
//// Добавляем новое событие, меняя приоритет
add_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_rating', 0 );
И как ожидалось:
// Событие вывода табов
add_action( 'woocommerce_after_single_product_summary', 'woocommerce_output_product_data_tabs', 10 );
// Вывод атрибутов товара
add_action( 'woocommerce_product_additional_information', 'wc_display_product_attributes', 10 );
// Событие срабатывает после вывода табов
do_action( 'woocommerce_product_after_tabs' );
// Событие вывода Апсейл товаров
add_action( 'woocommerce_after_single_product_summary', 'woocommerce_upsell_display', 15 );
// Событие вывода похожих товаров
add_action( 'woocommerce_after_single_product_summary', 'woocommerce_output_related_products', 20 );
Как вы уже поняли, можно полностью поменять внешний вид ваших товарных страниц в WooCommerce.
Но, что еще можно сделать с событиями, у которых нет хуков? Ответ простой – сами события можно удалить, а на их место поставить что-то своё!
Вот так сейчас выглядит страница простого товара в нашем экспериментальном WooCommerce магазине:
Давайте кардинально изменим положение блока похожих товаров и изменим их количество:
// Меняем кол-во вывода похожих товаров
add_filter( 'woocommerce_output_related_products_args', 'wplb_rp', 20 );
function wplb_rp( $args ) {
$args[ 'posts_per_page' ] = 3; // Сколько выводить
$args[ 'columns' ] = 3; // Сколько колонок использовать
return $args;
}
// Удаляем событие по умолчанию
remove_action( 'woocommerce_after_single_product_summary', 'woocommerce_output_related_products', 20 );
// Создаем свое событие и меняем местоположение похожих товаров
add_action( 'woocommerce_share', 'woocommerce_output_related_products', 100 );
И как результат:
Тут стоит сказать что, использовав фильтр, мы изменили так же CSS класс списка похожих товаров. Было – ul.columns-4, а стало ul.columns-3, если в вашей теме этот класс не описан то вот:
@media (min-width: 1120px) {
.wc-col-4.woocommerce ul.products.columns-3 li.product,
.columns-4.woocommerce ul.products.columns-3 li.product {
flex: 0 0 33%;
max-width: 33%;
}
}
Не забудьте прописать стили для мобильных устройств!
Работа с стольными событиями на странице товара ничем не отличается от вышеописанных методов. Давайте просто перечислим и укажем приоритеты.
// Отображает граватар авторов обзора
add_action( 'woocommerce_review_before', 'woocommerce_review_display_gravatar', 10 );
// Вывод рейтинга
add_action( 'woocommerce_review_before_comment_meta', 'woocommerce_review_display_rating', 10 );
// Отображение мета данные авторов обзора (имя, дата отзыва...)
add_action( 'woocommerce_review_meta', 'woocommerce_review_display_meta', 10 );
// Срабатывает до вывода комментария
do_action( 'woocommerce_review_before_comment_text', $comment );
// Вывод текста комментария
add_action( 'woocommerce_review_comment_text', 'woocommerce_review_display_comment_text', 10 );
// Срабатывает после вывода комментария
do_action( 'woocommerce_review_after_comment_text', $comment );
// Событие срабатывает после вывода информации о товаре
do_action( 'woocommerce_after_single_product' );
// Событие после вывода всего тела контента
do_action( 'woocommerce_after_main_content' );
События и хуки – это классно, это здорово. Благодаря им можно полностью изменить страница товара в WooCommerce не трогая шаблонов. Так же, как вы понимаете, можно удалить все события которые срабатывают по умолчанию и собрать страница с чистого листа, используя свою собственную разметку, функции и логику.
Если у вас есть вопросы – спрашивайте в комментариях.
Спасибо.
Если вы попали на эту страницу значит у вас уже есть интернет-магазин на WordPress.
Конечно, организация торговой площадки для человека, не имеющего соответствующего опыта, вызывает определённые затруднения. Чтобы помочь многочисленным пользователям, мы составили максимально подробный, честный и объективный рейтинг и описали лучшие шаблоны интернет магазина WordPress ?
Особое внимание уделяется следующим признакам:
Обратите внимание, что список тем не отсортирован! Нет первого, второго, третьего или тридцатого места. Все шаблоны для интернет-магазинов WordPress, которые вы увидите на этой странице – разные, но качественные и в ручную отобранные.
Ладно, давайте начинать ?
В настоящее время, из-за ухода Visa и MasterCard с Российского рынка Вы больше не сможете покупать шаблоны на интернациональных площадках!
Всё, что ниже описано – теряет свою актуальность!
Да, на ThemeForest есть свой рейтинг бестселлеров, но очевидно, что в нашем рейтинге не будут учавствовать шаблоны созданные два, три или даже семь лет назад. Есть такое понятие, как «усталость автора», когда создатели темы годами работают над одним и тем же кодом, постоянно пытаясь модернизировать его и добавить новый функционал. С годами такой “бестселлер” обрастает тоннами кода, что негативно сказывается на качестве конечного интернет магазина.
Не будем долго рассуждать о специфике формирования рейтингов на темфорсете, переходим к конкретике …
Sober по праву является одним лучших шаблонов для создания интернет-магазина. Универсальный, модный и с кучей разных фишек! В качестве основы используются два самым популярных конструктора страниц. Мы бы советовали использовать Elementor, так как уже WPBakery Page Builder достаточно старый билдер.
Что понравилось:
Премиальные вкрапления:
Общие суждения:
Тему смело можно рекомендовать к покупке! Интернет магазин на этом шаблоне получится очень красивый, хотя и не самый быстрый, но это можно компенсировать плагинами для оптимизации.
Goya – это современная минималистичная WordPress тема со всеми необходимыми функциями для вашего интернет магазина. Меньше чем за год тема набрала более 3000 продаж, а общий рейтинг стремится к твердой пятерке, а цена всего $29!
Что понравилось:
Премиальные вкрапления:
Премиальные вкрапления:
Не очень нравится, что в основе темы WPBakery Page Builder, всё же это не самый лучший конструктор для 2021 года, но тему смело можно рекомендовать к покупке! Интернет магазин на основе этого шаблона будет точно актуален в течении следующих нескольких лет
Molla – Великолепно оптимизированная тема, которая подойдёт для создания практически любого интернет магазина на WordPress и WooCommerce. Великолепная детализация элементов интерфейса и огромное кол-во функций делает этот шаблон настоящей изюминкой. Цена немного кусается – $59, но очень похоже, что оно того стоит!
Что понравилось:
Что не понравилось:
Премиальные вкрапления:
Вложенных премиальных плагинов нет, что в целом тоже несёт свои плюсы.
Общие суждения:
Metro – великолепная ВордПресс тема для создания интернет магазина в минималистическом стиле. С марта двадцатого года уже набрала более двух тысяч продаж с общим рейтингом 4.7+. Стоит $29, похоже, что сейчас идет какая-то акция.
Что понравилось:
Что не понравилось:
Премиальные вкрапления:
Общие суждения:
Все трендовые WordPress шаблоны для интернет магазинов можно посмотреть тут, а мы отбираем лучшие на наш взгляд:
Bijoux – Потрясающий шаблон для создания нишевого интернет магазина. Демо контент наполнен ювелирной продукцией, но заменив изображения мы можем получить магазин любой направленности, но с ярко выраженной люксовой направленностью. Цена в $79 – не типична, но оправдана на все 100%!
Что понравилось:
Что не понравилось:
Премиальные вкрапления:
Их нет, но и не надо для нишевых шаблонов.
Общие суждения:
Woncep – шаблона с минималистичным и элегантным дизайном станет хорошим выбором для тех, кто ищет отличную тему для своих магазинов одежды или аксессуаров. Кроме того, Woncep имеет множество различных функций и возможностей.
Что понравилось:
Что не понравилось:
Премиальные вкрапления:
Общие суждения:
Reeco – чистая и современная WordPress тема для создания нишевого интернет-магазина на базе WooCommerce и Elementor. В демо акцент идет на мебель, но видно, что шаблон подойдет и для другой тематики. Цена $29 (сейчас идет скидка в 33%).
Что понравилось:
Что не понравилось:
Премиальные вкрапления:
Общие суждения:
Flatsome — одна из премиальных WordPress-тем для создания интернет-магазина. Здесь предлагается полная поддержка WordPress & WooCommerce. Здесь есть визуальный редактор, который поможет без знания языков разметки править дизайн. Изменять можно путем Drag & Drop. Стоимость: $59
Что понравилось:
Хоть Flatsome и не предлагает каких-либо плагинов, что было бы не лишним за такую цену, он привлекает дизайном и множеством демок, демонстрирующих возможности шаблона и на основе которых можно сделать свой ИМ в пару кликов.
Porto — легкая тема для создания собственного интернет-магазина на WordPress. Поддержка Elementor и Visual Composer помогает кастомизировать каждый элемент темы. Стоимость: $59
Что понравилось:
Плагины:
Шаблон содержит в себе WPBakery (экономия $45) и Slider Revolution (экономия $85). Плагины делают изменение дизайна под пользовательские цели интуитивным
Porto – продуманный шаблон, один из самых продаваемых на ThemeForest (50 000+ продаж). Подкупает тем, что создатели Порто снабдили его 90 демоверсиями с контентом и дали два плагина для кастомизации интернет-магазина.
WoodMart — надо сразу сказать, что тема проработанная, имеет выделяющийся функционал. На ее основе легко создавать магазины и снабжать их блогами. При создании разработчики отталкивались исходя из пользовательского опыта и оптимизации. Стоимость: $59
Что понравилось:
Плагины:
Шаблон содержит в себе WPBakery (экономия $45) и Slider Revolution (экономия $85). За счет этого дизайн можно изменять в пару кликов
WoodMart – хороший шаблон, предлагающий демоверсии под разные направленности интернет-магазина. Радует наличие функции “разные характеристики одного товара”. А вот наличие лишь WPBakery расстраивает так как билдер морально устарел.
XStore — WordPress шаблон для создания интернет-магазина. Он имеет расширенный функционал, позволяя пользователям создавать аккаунты и совершать покупки в магазине еще более удобно. Наличие билдеров страниц позволяет легко кастомизировать тему. XStore предоставляет 100 демо версий сайтов, поэтому будет из чего выбрать. Важным является наличие XStore Studio – решением, которое объединяет в себе удобную кастомизацию страниц и менеджмент заказов. Стоимость: $39.
Что понравилось:
Плагины:
В целом XStore является удобной темой с широкими возможностями кастомизации и высокой скоростью работы созданных сайтов (автор проверял ее по разным сервисам и получал результат в 98-99%). Рекомендовать можно смело.
The Retailer — бестселлер среди тем интернет-магазинов, предоставляющая 15+ вариантов для кастомизации – 7 стилей домашней страницы и еще много макетов под сам магазин. Легко кастомизируется, есть несколько режимов футера и хедера.
Тема уже включает в себя билдер WPBakery, но совместима и с другими. Позволяет создавать аккаунты, просматривать изменяемые характеристики товара без перезагрузки страницы и много разных других прикольных штук. Стоимость: $59.
Что понравилось:
Плагины:
Retailer – продаваемый шаблон для WordPress, но для большего удобства можно было включить туда несколько демок, а не вариантов разных страниц, а также WPBakery заменить на более свежий Elementor.
Savoy — тема для интернет-магазина на WP, имеющая 11 000 продаж на ThemeForest. У нее минималистичный дизайн, есть варианты кастомизации блоков, страниц отдельно, целых лейаутов, короче всего-всего. Имеет минималистичный дизайн и AJAX-функции, которые делают использование сайта удобным. Стоимость: $59.
Что понравилось:
Плагины:
Savoy – хорошая тема с минималистичным дизайном, на ее базе можно создать интернет-магазины в разных нишах, благо тут еще включен WPBakery и поддерживается Элементор, поэтому с кастомизацией проблем не возникнет.
Basel — тема для создания магазина любого размера – от маленького магазина до гипермаркета. Компактный и универсальный дизайн позволяет задавать любую направленность у магазина. Также тут присутствует AJAX, что оптимизирует некоторые функции сайта. Помимо этого предлагается еще и множество разных вариантов оформления для разных направленностей – одежда, техника, магазин, ювелирка, продукты и др. Стоимость: $59.
Что понравилось:
Плагины:
В целом шаблон предоставляет неплохой выбор направленностей, работает на AJAX, а это значит Live-поиск и фильтрацию. Минусов не обнаружено.
BoxShop — популярная тема для организации любого интернет-магазина по размера и категоризации. Есть гипермаркеты, а есть многостраничные магазины. Плагины помогают кастомизировать дизайн. Нравится, что при наведении увеличивается товар и его можно рассмотреть как под лупой. В целом тема является продуманной и содержит популярный функционал. Стоимость: $59.
Что понравилось:
Плагины:
BoxShop – популярная тема, позволяющая создавать интернет-магазин разный по объему и по направленности, а предпросмотр товара в выбранных цветах и размерах без перезагрузки повышает юзабилити.
Kapee — тема выпущена в 2019 году, но она уже успела завоевать 5 звезд рейтинга. Здесь, как и во многих других темах применяется технология AJAX, которая позволяет без перезагрузки страницы смотреть товар при разных характеристиках, а также работать с корзиной. Дизайн темы хорошо оформлен, большинство из них оформлены в сине-белых тонах, но есть и другие вариации. Стоимость: $59
Что понравилось:
Плагины:
Kapee помимо дизайна, наполнена функционалом интернет-магазина, типа корзины, фильтров, предпросмотра и изменения параметров товара – и все это при помощи технология AJAX, которая улучшает пользовательский опыт. Жаль что здесь устаревший WPBakery вместо Элементора.
Cena Store — красивый, но с первого взгляда узконаправленный шаблон, направленный на создание интернет-магазина техники и гаджетов. Однако, наличие WPBakery Builder предполагает полную кастомизацию сайта, так что возможно удастся под другую специализацию подвернуть. Стоимость: $59.
Что понравилось:
Плагины:
Cena Store – хорошая тема для создания интернет-магазина, у меню здесь есть светлая и темная тема. Лейауты здесь легко кастомизируются. Лист избранных продуктов поможет в продвижении конкретных товаров. Тема стоит возможности рассмотрения.
AhaShop — высоко оценённая тема для интернет-магазина на Форесте. На 400+ продаж тут приходится рейтинг 5 звезд. Сама же тема достаточно простенькая, без наворотов. Позволяет просматривать продукты, добавочную информацию о них, писать и просматривать обзоры И конечно же, куда же без блога. Каждая страница имеет несколько дизайнов, так что есть из чего выбрать. Демок нету. Стоимость: $55.
Что понравилось:
AhaShop – прикольная тема. Тут нет плагинов, что с одной стороны может быть плохо, так как за такую цену можно предложить плагин. Сам шаблон достоин внимания.
Lorada — мультиконцептуальный ВордПресс шаблон для интернет-магазина. Даже в демках тут достаточно много тем, включая дефолтный магазин, магазин с разными режимами хедера и футера и прочим. Тут есть Элементор, который позволяет изменять блоки Drag & Drop-ом. Дизайн тут легкий, но красивый. Естественно, есть AJAX-функции, чтобы повысить юзабилити. Стоимость: $53.
Что понравилось:
Плагины:
Lorada – прикольная тема для разработчиков и пользователей. Функции предпросмотра и прямого просмотра характеристик продукта повышают юзабилити. В целом, выглядит круто.
Drile — красивая и удобная по функционалу тема, также содержащая AJAX-функции типа корзины, реализации покупок и загрузки. Демки тут выполнены в категории “Мебель”, но потенциально можно использовать и для других тем. От других его отличает дизайн некоторых домашних страниц. Например, когда один экран посвящен только одному главному продукту. В целом же дизайн тут компактный и современный. Стоимость: $59.
Что понравилось:
Плагины:
Drile – легкая тема, которая выглядит круто на всех устройствах. При этом на ThemeForest рейтинг с твердой пятеркой, на 500+ скачиваний. Среди крутых функций – интеграция с Гугл Картами “из коробки” и параллакс.
Riode — лайтовая и светлая по оформлению тема для создания интернет-магазина на WordPress, предоставляющая много функций для настройки лейаутов и настройки для отображения контента интернет-магазина, включая и функционал. Демок тут 40+, поэтому можно посмотреть как шаблон отрабатывает в разных тематиках. В самой карточке товара есть его увеличение, функция “поделиться” и стандартные функции. Стоимость: $59
Что понравилось:
Riode собирается либо на WPBakery, либо на Elementor, и при этом не нужны полные версии плагинов. Тема легко меняется под пользовательские нужды, а сайты загружаются быстро (по Google PageSpeed 95 баллов). Тема прикольная, и 5 звезд рейтинга это подтверждают.
Artemis — шаблон для интернет-магазина на WordPress любой направленности. Имеет красивый дизайн, несколько удобных фишек и даже платных плагинов. Пользоваться такой темой легко. В нее внедрены также некоторые авторские виджеты. Стоимость: $59 $29 (скидка).
Что понравилось:
Плагины:
Тема включает в себя WPBakery (экономия $45) и Slider Revolution (экономия $85). За счет этих плагинов кастомизация пройдет легче.
Artemis – хорошая тема с поддержкой видео-галереи популярными платными плагинами и хорошим дизайном. Демоверсии помогают понять, на что способен шаблон, а тут таких много. Поэтому однозначно стоит попробовать шаблон.
На просторах рынка очень часто можно встретить шаблоны со скидкой до 70%. Авторы охотно идут на этот шаг по разным обстоятельствам. Скидки можно увидеть как на старте продаж, так и в праздничные дни. Полный перечень шаблоном со скидкой можно посмотреть на этой странице.
Нет смысла описывать конкретные шаблоны, скидки не долговечны, дадим лишь несколько советов:
Кажется очевидной вещью, но вы будете удивлены, узнав, как некоторые люди просто игнорируют описание. Не делайте той же ошибки. Тщательно изучите детали каждой темы, которую вы рассматриваете.
Обратите внимание, что описание шаблона может быть рваным, а значит автор не следит за своей работой, а купив такой шаблон, вы скорее всего не получите поддержку в случае обнаружения багов.
Скорость работы шаблона можно проверить, используя PageSpeed Insights от Google.
Обязательно пролистайте раздел с обсуждениями «Comments», в котором есть комментарии и вопросы пользователей – это поможет понять вам, как быстро автор темы отвечает на вопросы. Если у вас есть свой вопрос, то смело спрашивайте автора – это нормальная практика.
У каждой темы есть раздел «Reviews» (отзывы). Авторы не могу самостоятельно удалять отзывы, которые им не нравятся, а значит можно узнать всю правду.
Справа, в боковой панели всегда стоит обратить внимание на то, когда шаблон создан (Created) и когда он последний раз обновлялся (Last Update). Не стоит покупать шаблоны по скидке котором уже более 5 лет!
В комментариях можете оставлять ссылки на интересующие Вас шаблоны и мы их честно оценим.
Мы постарались изложить всю информацию максимально доступно, но если у вас всё равно остались вопросы, вы можете смело их нам задать, и мы обязательно поможем!
Спасибо.
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).
А для подавляющего большинства пользователей и разработчиков будет достаточно плагина:
Несмотря на то, что плагин позволяет создавать задания через интерфейс, мы его используем только для мониторинга и отладки.
Самый надежный и простой метод:
// Описываем функцию деактивации
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, данных.
Мы постарались изложить всю информацию максимально доступно, но если у вас все равно остались вопросы, вы можете смело их нам задать, и мы обязательно поможем!
Спасибо.
Стандартизированная, организованная, объектно-ориентированная основа для создания высококачественных 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 ?
Если у вас есть вопросы – спрашивайте в комментариях.
Спасибо.
Использование «Ajax» является одним из самых распространенных методов создания и работы с пользовательскими интерфейсами.
Применение этой технологии позволяет выполнять незаметную фоновую обработку данных (без перезагрузки страницы), что значительно улучшает процесс взаимодействия пользователей с сайтом.
В качестве примера, работу Ajax в WordPress можно наблюдать в панели администратора если открыть консоль браузера и перейти во вкладку «Network», но, как и везде, в WordPress есть свои особенности работы с асинхронным JavaScript и в этой статье мы на их рассмотрим.
Осваивать работу Ajax в WordPress мы будем на реальном примере, а именно будем создавать «форму регистрации и авторизации пользователей», для вашего WordPress сайта.
Благодаря рубрикам осуществляется группировка связанных записей. Рубрика, к которой по умолчанию привязываются все новые записи — «Без рубрики» (Uncategorized), но ее можно легко изменить в настройках.
Формы, которые вы видите ниже, будут результатом нашей совместной работы. Они полностью рабочие, пробуйте.
Так как это обучающие пособие, то все пользователи, которые зарегистрировались через эту форму, периодически удаляются!
Предполагается, что читатель уже обладает базовыми навыками работы с HTML, CSS, PHP и jQuery, так как мы не будем посимвольно разжёвывать каждый кусок кода.
Начать погружение в работу Ajax на WordPress сайтах следует с изучения теории, этим и займёмся.
Начиная с бородатой версии ядра 2.8, WordPress позволяем создавать собственные события, используя встроенный Ajax, но стоит понимать, что есть ряд правил, которым нужно следовать:
Как видно, свод правил достаточно коротки и никаких критичных ограничений не несет.
Давайте уже переходить к практике.
Первое, что нам предстоит сделать – это создать HTML разметку форм для регистрации/авторизации и стилизовать их. Процесс этот описывать не будем, а сам код можно взять здесь.
Стоит учесть, что таблица стилей вашей темы может частично перекрыть стили форм, с которыми мы работаем, но в целом должно получиться примерно так:
Для начала, советуем не менять HTML разметку, которая используется в этом уроке, а просто скопировать и вставить в тело страницы, используя элемент HTML в редакторе блоков.
Скрипты в этом уроке будет опираться именно на эту разметку.
Вставляем этот код в functions.php вашей темы (желательно дочерней):
// Добавляем событие в процесс инициализации JS скриптов
add_action( 'wp_enqueue_scripts', 'wplb_ajax_enqueue' );
//Описываем событие
function wplb_ajax_enqueue() {
// Подключаем файл js скрипта.
wp_enqueue_script(
'wplb-ajax', // Имя
get_stylesheet_directory_uri() . '/scripts/wplb-ajax.js', // Путь до JS файла.
array('jquery') // В массив jquery.
);
// Используем функцию wp_localize_script для передачи переменных в JS скрипт.
wp_localize_script(
'wplb-ajax', // Куда будем передавать
'wplb_ajax_obj', // Название массива, который будет содержать передаваемые данные
array(
'ajaxurl' => admin_url( 'admin-ajax.php' ), // Элемент массива, содержащий путь к admin-ajax.php
'nonce' => wp_create_nonce('wplb-nonce') // Создаем nonce
)
);
}
Давайте подробнее рассмотрим это кусок кода:
Первое, что мы делаем, хукаем событие инициализации скриптов для регистрации собственного *.js.
Обратите внимание, что мы используем функцию get_stylesheet_directory_uri(), для того, чтобы указать путь к новому JS файлу так как работаем в дочерней теме. Если вы работаете в родительской теме, то используйте функцию get_template_directory_uri().
Благодаря функции wp_localize_script(), а в файле /scripts/wplb-ajax.js, будет доступен объект с данными которые мы отправляем из PHP. Имейте ввиду, что таким методом можно передавать любые, как статичные данные из БД, так и результаты отработки циклов ☝️
Для начала, содержимое файла wplb-ajax.js, который должен находится в папке wp-content/моя_тема/scripts будет таким:
jQuery(document).ready(function ($) {
'use strict';
'esversion: 6';
// Функция отправки форм.
$('.wplb_holder').on('submit', 'form', function (ev) {
// Определяем какую форму пользователь заполнил.
let this_is = $(this);
// Определяем кнопку.
let button = $(this).find('input[type="submit"]');
// Определяем тип формы.
let type = $(this).attr('data-type');
// Отправляем запрос Ajax в WordPress.
$.ajax({
// Путь к файлу admin-ajax.php.
url: wplb_ajax_obj.ajaxurl,
// Создаем объект, содержащий параметры отправки.
data: {
// Событие к которому будем обращаться.
'action': 'wplb_ajax_request',
// Передаём тип формы.
'type': type,
// Передаём значения формы.
'content': $(this).serialize(),
// Используем nonce для защиты.
'security': wplb_ajax_obj.nonce,
// Перед отправкой Ajax в WordPress.
beforeSend: function () {}
}
})
.always(function() {
// Выполнять после каждого Ajax запроса.
})
.done(function(data) {
// Функция для работы с обработанными данными.
})
.fail(function(errorThrown) {
// Читать ошибки будем в консоли если что-то пойдет не по плану.
console.log(errorThrown);
});
// Предотвращаем действие, заложенное в форму по умолчанию.
ev.preventDefault();
});
});
Давайте проясним некоторые моменты:
Обратите внимание, что используются две директивы:
Вы наверное заметили, что используется функция .on(), вот так:
$('.wplb_holder').on('submit', 'form', function (event) {});
Вместо простой и привычной:
$( "form" ).submit(function( event ) {});
Дело в том, что функция .on() позволяет обращаться к динамически добавленным в DOM (объектная модель документа) элементам.
Если представить, что в результате какого-то события на странице появился новый блочный элемент с ссылкой:
Если по ссылке нужно будет кликнуть, то:
// Так работать не будет:
$('#wplb_read_more').click(function(event){});
// Так будет:
$('#wplb_new_element').on('click', '#wplb_read_more', function (event) {});
Конструкция самой $.ajax({}) функции достаточно проста, а для каждой строки мы добавили комментарии. Но стоит обратить внимание, что мы используем объект <wplb_ajax_obj, который создали при инициализации самого скрипта.
Событие, которое будет обрабатывать Ajax в WordPress ядре, в нашем случае называется wplb_ajax_request.
Давайте его создадим.
Возвращаемся в functions.php добавляем следующий код:
// Создаём событие обработки Ajax в WordPress теме.
add_action( 'wp_ajax_nopriv_wplb_ajax_request', 'wplb_ajax_request' );
//add_action( 'wp_ajax_wplb_ajax_request', 'wplb_ajax_request' );
// Описываем саму функцию.
function wplb_ajax_request() {
// Перемененная $_REQUEST содержит все данные заполненных форм.
if ( isset( $_REQUEST ) ) {
// Проверяем nonce, а в случае если что-то пошло не так, то прерываем выполнение функции.
if ( !wp_verify_nonce( $_REQUEST[ 'security' ], 'wplb-nonce' ) ) {
wp_die( 'Базовая защита не пройдена' );
}
// Введём переменную, которая будет содержать массив с результатом отработки события.
$result = array( 'status' => false, 'content' => false );
// Создаём массив который содержит значения полей заполненной формы.
parse_str( $_REQUEST[ 'content' ], $creds );
switch ( $_REQUEST[ 'type' ] ) {
case 'registration':
/**
* Заполнена форма регистрации.
*/
break;
case 'authorization':
/**
* Заполнена форма авторизации.
*/
break;
}
// Конвертируем массив с результатами обработки и передаем его обратно как строку в JSON формате.
echo json_encode( $result );
}
// Заканчиваем работу Ajax.
wp_die();
}
Для создания самого события используется хук «wp_ajax_action_name», где action_name это название события, в нашем случае wplb_ajax_request, а вот префикса может быть два:
Получается, что если нам нужен Ajax который будет работать как для гостей, так и для авторизированных пользователей WordPress сайта, то нужно создать оба события одновременно!?
Мы так же ввели переменную $result, которая будет содержать массив с результатами обработки, а сам массив конвертируем в строку JSON формата и отправляем обратно в браузер.
Пора начинать работать с пользователями.
При отправки формы, благодаря функции serialize(), в глобальную переменную $_REQUEST и как элемент массива, запишутся все данные заполненной формы.
Начнем с формы регистрации, а значит там где мы используем оператор switch нас интересует случай «registration».
Вставляем следующий код:
case 'registration':
/**
* Заполнена форма регистрации.
*/
// Пробуем создать объект с пользователем.
$user = username_exists( $creds[ 'wplb_login' ] );
// Проверяем, а может быть уже есть такой пользователь
if ( !$user && false == email_exists( $creds[ 'wplb_email' ] ) ) {
// Пользователя не существует.
// Создаём массив с данными для регистрации нового пользователя.
$user_data = array(
'user_login' => $creds[ 'wplb_login' ], // Логин.
'user_email' => $creds[ 'wplb_email' ], // Email.
'user_pass' => $creds[ 'wplb_password' ], // Пароль.
'display_name' => $creds[ 'wplb_login' ], // Отображаемое имя.
'role' => 'subscriber' // Роль.
);
// Добавляем пользователя в базу данных.
$user = wp_insert_user( $user_data );
// Проверка на ошибки.
if ( is_wp_error( $user ) ) {
// Невозможно создать пользователя, записываем результат в массив.
$result[ 'status' ] = false;
$result[ 'content' ] = $user->get_error_message();
} else {
// Создаём массив для авторизации.
$creds = array(
'user_login' => $creds[ 'wplb_login' ], // Логин пользователя.
'user_password' => $creds[ 'wplb_password' ], // Пароль пользователя.
'remember' => true // Запоминаем.
);
// Пробуем авторизовать пользователя.
$signon = wp_signon( $creds, false );
if ( is_wp_error( $signon ) ) {
// Авторизовать не получилось.
$result[ 'status' ] = false;
$result[ 'content' ] = $signon->get_error_message();
} else {
// Авторизация успешна, устанавливаем необходимые куки.
wp_clear_auth_cookie();
clean_user_cache( $signon->ID );
wp_set_current_user( $signon->ID );
wp_set_auth_cookie( $signon->ID );
update_user_caches( $signon );
// Записываем результаты в массив.
$result[ 'status' ] = true;
}
}
} else {
// Такой пользователь уже существует, регистрация не возможна, записываем данные в массив.
$result[ 'status' ] = false;
$result[ 'content' ] = esc_html__( 'Пользователь уже существует', 'wplb_ajax_lesson' );
}
break;
Всё достаточно просто. При благоприятном стечении обстоятельств пользователь будет зарегистрирован и авторизован, а в противном случае, благодаря встроенному в WordPress обработчику ошибок, мы будем знать, что именно пошло не так.
Проще говоря, результат обработки вернется в файл wplb-ajax.js в 100% случаях.
Давайте посмотрим, что можно сделать с полученным назад данными.
Мы еж описали процесс авторизации в блоке относящемся к регистрации, а так плодить запросы Ajax в WordPress мы не собираемся, то просто скопируем кусочек кода и вставим его в нужное место:
case 'authorization':
/**
* Заполнена форма авторизации.
*/
// Создаём массив для авторизации
$creds = array(
'user_login' => $creds[ 'wplb_login' ], // Логин пользователя
'user_password' => $creds[ 'wplb_password' ], // Пароль пользователя
'remember' => true // Запоминаем
);
// Пробуем авторизовать пользователя.
$signon = wp_signon( $creds, false );
if ( is_wp_error( $signon ) ) {
// Авторизовать не получилось
$result[ 'status' ] = false;
$result[ 'content' ] = $signon->get_error_message();
} else {
// Авторизация успешна, устанавливаем необходимые куки.
wp_clear_auth_cookie();
clean_user_cache( $signon->ID );
wp_set_current_user( $signon->ID );
wp_set_auth_cookie( $signon->ID );
update_user_caches( $signon );
// Записываем результаты в массив.
$result[ 'status' ] = true;
}
break;
Дублирование процедур в коде – это очень плохое решение и вам стоит создать отдельную функцию, описывающую процесс авторизации и вызывать её в нужных местах.
На этом процесс обработки входных данных закачивается, давайте вернёмся в JavaScript файл и поработаем с данными которые вернуться.
Прежде чем, что-то сделать с данными которые мы обработали и вернули обратно, давайте посмотрим что можно сделать перед изначальной их отправкой.
Описываем функцию beforeSend: function () {}):
// Перед отправкой запроса Ajax в WordPress ядро.
beforeSend: function () {
// Спрячем кнопку и покажем пользователю, что скрипт работает.
button.hide();
this_is.find('.wplb_alert').hide();
this_is.find('.wplb_loading').show();
}
Всё просто, мы спрятали кнопку отправки формы и показали всевдоспинер, для визуализации процесса.
Теперь опишем процесс визуализации вернувшихся данных:
.done(function(data) {
// Функция для работы с обработанными данными.
// Переменная $reslut будет хранить результат обработки.
let $result = JSON.parse(data);
// Проверяем какой статус пришел
if($result.status == false){
//Пришла ошибка, скрываем не нужные элементы и возвращаем кнопку.
this_is.find('.wplb_alert').addClass('wplb_alert_error').html($result.content).show();
button.show();
}else{
// Пользователь авторизован, покажем ему сообщение.
$('.wplb_holder').addClass('wplb_alert wplb_signon').html('Добро пожаловать!
Ajax выполнил свою работу, вы в системе! Перезагрузите страницу и убедитесь.');
}
})
Так как код очень простой и содержит комментарии, то описывать его смысла нет.
Как видите использовать Ajax в WordPress очень просто, но учтите, что в рамках этого урока мы опустили несколько важных моментов и предлагаем вам разобраться с ними самостоятельно:
К этому уроку мы подготовили все исходники, а форму обернули в шорткод для более удобного использования. Скачать можно тут.
Инструкция:
Вставьте этот шорткод в тело страницы, любым удобным методом, удалив лишние пробелы:
[ wplb_ajax_example ]
Если у вас есть вопросы спрашивайте в комментариях.
Спасибо.
Авторизуйтесь, чтобы продолжить *
или
* Если аккунта у Вас еще нет, то он будет создан автоматически