@smash_wp

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

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

<ul class="product-categories">

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

Наверное, это можно сделать с помощью фильтров?
Подскажите, пожалуйста.
  • Вопрос задан
  • 985 просмотров
Пригласить эксперта
Ответы на вопрос 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. Более подробно описано здесь.
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы