覆盖WooCommerce类别列表Walker的最佳方法

时间:2015-10-02 06:04:23

标签: php wordpress wordpress-plugin woocommerce wordpress-theming

覆盖某些类中 woocomerce 插件目录中定义的 woocomerce 函数的最佳方法是什么? 例如,我想更改类start_el中声明的函数WC_Product_Cat_List_Walker。我可以通过更改保留更改插件目录中的功能代码,直到我升级 woocomerce 插件。 如何在主题functions.php文件中覆盖它?

2 个答案:

答案 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_WalkerSO_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' );