@smash_wp

Как добавить класс к списку категорий WooCommerce?

Как можно добавить класс к виджету списка категорий?

<ul class="product-categories">

Нашел файл, где это всё создается (class-wc-widget-product-categories.php), но так как это файл ядра, то понятно, что при обновлении woocommerce'а все изменения затрутся.

Наверное, это можно сделать с помощью фильтров?
Подскажите, пожалуйста.
  • Вопрос задан
  • 972 просмотра
Пригласить эксперта
Ответы на вопрос 1
Lee_Swagger
@Lee_Swagger
Один из способов решения задачи - переопределение метода класса WC_Widget_Product_Categories

Для этого нужно создать файл [текущая_тема]/widgets/widget-product_categories.php

Поместить туда код переопределяемого метода
class Custom_WC_Widget_Product_Categories extends WC_Widget_Product_Categories {
 
  function widget( $args, $instance ) {
    // скопировать весь код метода из:
    // woocommerce/includes/widgets/class-wc-widget-product-categories.php
    // добавить нужный класс в строке с выводом открывающего тега списка
    echo '<ul class="product-categories <b>my-class</b>">';
  }
}


Затем поместить в functions.php активной темы следующий код:

/**
 * WC_Widget_Product_Categories widget override
 */
add_action( 'widgets_init', 'override_woocommerce_widgets', 15 );

function override_woocommerce_widgets() {

  if ( class_exists( 'WC_Widget_Product_Categories' ) ) {
    unregister_widget( 'WC_Widget_Product_Categories' );
 
    include_once( 'widgets/widget-product_categories.php' );
 
    register_widget( 'Custom_WC_Widget_Product_Categories' );
  }

}

Здесь происходит повторная регистрация виджета с уже измененными параметрами, при этом файлы ядра не меняются.

Собственно, все.

P.S. Более подробно описано здесь.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы