重写某个类的woocomerce plugins目录中定义的woocomerce函数的最佳方法是什么。例如, 我想更改在WC_Product_Cat_List_Walker类中声明的函数start_el。我可以通过更改保留更改插件目录中的功能代码, 直到升级woocomerce插件为止。如何在主题functions.php文件中覆盖它?
#1尝试这个…
你可以创建一个类并扩展到WC_Product_Cat_List_Walker。
class My_WC_Product_Cat_List_Walker extends WC_Product_Cat_List_Walker {
public $tree_type = 'product_cat';
public $db_fields = array ( 'parent' =>
'parent', 'id' =>
'term_id', 'slug' =>
'slug' );
public function start_el( &
$output, $cat, $depth = 0, $args = array(), $current_object_id = 0 ) {
$output .= '<
li class="cat-item cat-item-' . $cat->
term_id;
if ( $args['current_category'] == $cat->
term_id ) {
$output .= ' current-cat';
}if ( $args['has_children'] &
&
$args['hierarchical'] ) {
$output .= ' cat-parent';
}if ( $args['current_category_ancestors'] &
&
$args['current_category'] &
&
in_array( $cat->
term_id, $args['current_category_ancestors'] ) ) {
$output .= ' current-cat-parent';
}$output .='">
<
a href="' . get_term_link( (int) $cat->
term_id, $this->
tree_type ) . '">
' . __( $cat->
name, 'woocommerce' ) . '<
/a>
';
if ( $args['show_count'] ) {
$output .= ' <
span class="count">
(' . $cat->
count . ')<
/span>
';
}
}}
然后像这样使用它:
add_filter('woocommerce_product_categories_widget_args', 'woorei_product_categories_widget_args', 10, 1);
function woorei_product_categories_widget_args($args) {
$args['walker'] = new My_WC_Product_Cat_List_Walker;
return $args;
}
#2首先, 只需尝试将/includes/walkers/class-product-cat-list-walker.php复制到你的主题中并包含新文件。它可能是可插入的, 你可以直接在此处直接编辑而无需任何其他努力。我不确定100%。
如果失败, 那么可以通过过滤woocommerce_product_categories_widget_args并提供你自己的walker来实现, 而不必尝试编辑WooCommerce。
将复制的Walker文件保留在原处, 但是将所有类名从WC_Product_Cat_List_Walker重命名为SO_Product_Cat_List_Walker。
【覆盖WooCommerce类别列表Walker的最佳方法】然后在主题的functions.php中, 告诉小部件将此新类用作适当的Walker。
function so_32901408_cat_widget( $args ){// include new walker class - where ever you saved/named it
include_once( 'wc-class-product-cat-list-walker.php' );
// set the name as the new walker for the widget args
$args['walker'] = new SO_Product_Cat_List_Walker;
return $args;
}
add_filter( 'woocommerce_product_categories_widget_args', 'so_32901408_cat_widget' );
推荐阅读
- 根据URL更改wordpress主题
- 找不到导致右边距的CSS
- 将maxlength属性添加到WordPress帖子标题
- WordPress中的外观菜单选项
- 向页面添加”添加到购物车消息”
- 在使用优雅主题的Divi主题的WordPress中,长菜单不显示
- 防火墙的基础与编写规则
- Windows Server 2022 中的最佳新功能
- RabbitMQ 安装