覆盖某些类中 woocomerce 插件目录中定义的 woocomerce 函数的最佳方法是什么?
例如,我想更改类start_el
中声明的函数WC_Product_Cat_List_Walker
。我可以通过更改保留更改插件目录中的功能代码,直到我升级 woocomerce 插件。
如何在主题functions.php
文件中覆盖它?
答案 0 :(得分:4)
试试这个......
您可以创建一个类并扩展到WC_Product_Cat_List_Walker。
0
然后使用它:
size() - 1
答案 1 :(得分:4)
首先,只需尝试将/includes/walkers/class-product-cat-list-walker.php
复制到主题中并添加新文件即可。它可以可插拔,您可以直接在那里编辑它而无需任何其他努力。我不是百分百肯定。
如果失败,那么您可以通过过滤woocommerce_product_categories_widget_args
并提供自己的助行器而不是尝试编辑WooCommerce来实现。
保留重复的walker文件,但将所有类名重命名为WC_Product_Cat_List_Walker
到SO_Product_Cat_List_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' );