WooCommerce переполнен фильтрами, крючками и функциями, которые помогут вам настроить и использовать плагин в вашей теме или плагине. Вот несколько небольших, но полезных примеров кода, а также советы и рекомендации по общим изменениям различных текстовых выходов.
Изменение текста кнопки «Добавить в корзину»
Есть два фильтра; один для текста «добавить в корзину» в цикле (woocommerce_product_add_to_cart_text
), а другой для кнопки в отдельном продукте (woocommerce_product_single_add_to_cart_text
):
// Single product view
add_filter('woocommerce_product_single_add_to_cart_text', function($text) {
return __('Buy this now', 'txtdomain');
});
// Loop
add_filter('woocommerce_product_add_to_cart_text', function($text) {
return __('Buy this', 'txtdomain');
});
Однако имейте в виду, что это переопределяет все тексты «Добавить в корзину». Даже те, которые изначально были «Выбрать варианты» (переменные товары) или «Подробнее» (недоступные для покупки товары — нет цены или их нет в наличии). Если вам нужна более тонкая настройка, включите в эти фильтры второй аргумент; объект продукта. Используйте объект продукта для условного управления выводом. Например, по типу продукта или по тому, можно ли его купить:
Изменить вывод ценового диапазона для переменных и сгруппированных продуктов
По умолчанию WooCommerce будет отображать самую низкую и самую высокую цену на переменные и сгруппированные продукты с «-» между ними. Вы можете очень легко изменить этот выходной диапазон. Например, убедитесь, что он показывает только самую низкую цену в форме «От:». WooCommerce имеет один фильтр для вариативных товаров и другой для сгруппированных товаров, так что давайте рассмотрим их оба по очереди.
Управление выводом HTML ценового диапазона для переменных продуктов осуществляется с помощью фильтра woocommerce_variable_price_html
. Объект продукта предоставляется в качестве второго аргумента.
Внутри функции нам нужно получить все цены. WooCommerce предлагает удобную функцию для переменных объектов продукта, get_variation_prices()
. Это возвращает массив всех цен вариантов, отсортированных в порядке убывания. Все, что нам нужно сделать, это извлечь первый элемент из массива цен и красиво его вывести:
Выходной HTML-фильтр ценового диапазона для сгруппированных товаров очень похож на переменные товары, но с одним отличием: в качестве аргумента фильтру передается массив цен всех сгруппированных «детских» товаров. Используемый фильтр woocommerce_grouped_price_html
:
Изменить вывод текста состояния запасов
Если вы активировали отображение состояния запасов в настройках WooCommerce, он должен отображать точное количество оставшихся запасов в представлении одного продукта (например, «42 в наличии»). Однако вы можете изменить вывод, чтобы вместо этого отображался диапазон, а не точная сумма. Или просто «В наличии», если хотите скрыть номер.
Для этого используется фильтр, woocommerce_get_stock_html
и если вы включите второй аргумент, вы получите объект продукта. С объектом продукта вы можете выполнять необходимые операции для тонкой настройки вывода. Имейте в виду, что фильтруемый вывод обернут внутри <p>
элемента, и ваш вывод тоже должен быть.
Для простого отображения «В наличии» или «Нет в наличии» этого будет достаточно:
Отображение запаса в «значениях диапазона» можно сделать следующим образом:
Переименовать статусы заказа
Иногда клиент хочет, чтобы разные метки на статусах заказов имели больше смысла в соответствии с их практикой интернет-магазина. Например, вы можете переименовать «На удержании» в «Не отправлено» или «Выполнено» в «Отправлено». Просто чтобы понять, какие заказы нужно отправить, а какие уже отправлены. WooCommerce предлагает простой фильтр wc_order_statuses
для всех доступных статусов заказов.
add_filter('wc_order_statuses', function($order_statuses) {
$order_statuses['wc-on-hold'] = __('Unsent', 'txtdomain');
$order_statuses['wc-completed'] = __('Sent', 'txtdomain');
return $order_statuses;
});
Доступные клавиши: wc-pending
, wc-processing
, wc-on-hold
, wc-completed
, wc-cancelled
, wc-refunded
и wc-failed
.