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');
});
Однак майте на увазі, що це перекриває всі тексти «Додати до кошика». Навіть ті, які спочатку були «Вибір варіантів» (варіантні товари) або «Докладніше» (неможливі придбання товарів – немає ціни або їх немає в наявності). Якщо ви бажаєте більш точного налаштування, додайте другий аргумент до цих фільтрів; об’єкт продукту. Використовуйте об’єкт product для умовного керування виходом. Наприклад, за типом продукту або за тим, чи можна придбати продукт:
Змініть вихід цінового діапазону на змінні та згруповані продукти
За замовчуванням 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
.