В прошлой статье мы рассмотрели, что такое хуки (hooks) и как использовать action hooks. Сегодня поговорим о более сложных фильтрах.
Как использовать filter hook для внесения изменений в Woocommerce
Filter Hooks вызываются в WooCommerce с помощью функции apply_filter( ‘filter_name’, $variable ).
Добавляют новые фильтры с помощью команды
add_filter( 'filter_name', 'your_custom_function_name' )
Это позволяет вам манипулировать переменной, которая передается в функцию, а затем возвращать значение переменной по мере необходимости.
Пример:
add_filter( 'filter_name', 'your_custom_function_name' ); function your_custom_function_name( $variable ) { // Ваш код редактирует переменную return $variable; }
Подобно action hook, вы создаете свою собственную функцию php и указываете, на каком фильтре ее использовать, но на этот раз вы передаете переменную, которая уже существует, и используете свою функцию для манипулирования выводом в соответствии с тем, что вам нужно.
С помощью хуков фильтра вам нужно вернуть значение.
Поиск фильтров в woocommerce
Поиск фильтров в woocommerce задача посложнее. Частично с ней поможет справиться плагин Query Monitor.
После его установки на верхней панели появится такое поле.
При наведении появится секция с важной информацией, в том числе строка события и фильтры.
Давайте перейдем на главную страницу и поменяем название заголовка «Популярное». Так как нам нужно внести изменение уже существующей информации, мы будем использовать фильтры.
Чтобы найти нужный фильтр нажимаем на строку «события и фильтры» плагина Query Monitor.
Появится следующая информация.
Выберем сверху homepage (ведь мы на главной странице), справа выберем события. Так как мы хотим переименовать раздел «популярное», то логично предположить, что за его отображение будет отвечать функция storefront_popular_products().
Нажмем на крестик рядом с функцией и увидим путь, который показывает, где спрятан данный фильтр, причем указывается и номер строки.
Переходим в шаблон wp-content/themes/storefront/inc/woocommerce/storefront-woocommerce-template-functions.php
Ищем 410 строку.
Таким образом мы установили, что за вывод популярных товаров отвечает фильтр под названием ‘storefront_popular_products_args’.
Теперь осталось переопределить его в functions.php дочерней темы.
function carolinaspa_popular_product($args1){ $args1['title' ] = "Это новое название популярных товаров"; return $args1; } add_action("storefront_popular_products_args", "carolinaspa_popular_product");
Смотрим результат
Таким же образом можно поменять количество колонок, товаров и так далее.
Например, сделаем так, чтобы на странице отображалось только 6 популярных товаров в 2 колонки.
function carolinaspa_popular_product($args1){ $args1['limit'] = 6; $args1['columns'] = 2; $args1['title' ] = "Это новое название популярных товаров"; return $args1; } add_action("storefront_popular_products_args", "carolinaspa_popular_product");
В следующей статье мы продолжим менять главную страницу.