扩展WooCommerce小部件类-WC_Widget_Product_Categories

时间:2018-10-12 作者:Ralphonz

我正在尝试扩展woocommerce类,该类用于在我自己的插件中创建产品类别小部件,该插件为woo commerce产品添加了一个称为“部门”的新分类法。

当我扩展WP\\u小部件时,一切正常,我看到一个新的小部件,可以添加到外观->小部件中。然而,当我试图扩展WC\\u Widget或WC\\u Widget\\u Product\\u类别时,我根本看不到新的Widget,即使我没有收到任何php错误。

以下是我所拥有的不起作用的东西:

//get the base classes
if(!class_exists(\'WC_Widget_Product_Categories\')) {
    require_once ABSPATH . \'wp-content/plugins/woocommerce/includes/abstracts/abstract-wc-widget.php\';
    require_once ABSPATH . \'wp-content/plugins/woocommerce/includes/widgets/class-wc-widget-product-categories.php\';
}

/**
 * Product departments widget class.
 *
 * @extends WC_Widget_Product_Categories
 */
class WC_Widget_Product_Departments extends WC_Widget_Product_Categories {
    /**
     * Constructor.
     */
    public function __construct() {
        $this->widget_cssclass    = \'woocommerce widget_product_departments\';
        $this->widget_description = __( \'A list or dropdown of product departments.\', \'woocommerce\' );
        $this->widget_id          = \'woocommerce_product_departments\';
        $this->widget_name        = __( \'Shop Departments\', \'woocommerce\' );

        parent::__construct();
    }
}
在我的主插件文件中:

add_action( \'widgets_init\', \'register_department_widgets\', 15 );

function register_department_widgets() {
  register_widget( \'WC_Widget_Product_Departments\' );
}
但是,如果我更改要扩展的类,它确实会起作用:

class WC_Widget_Product_Departments extends WC_Widget
如果我想延长WC_Widget_Product_Categories

1 个回复
最合适的回答,由SO网友:ahendwh2 整理而成

呼叫时parent::__construct() 从…起WC_Widget_Product_Departments 的构造函数WC_Widget_Product_Categories 立即覆盖类属性(尤其是widget_id), 看见here at GitHub. 所以你必须扩展WC_Widget 创建一个新的小部件,然后您可以从WC_Widget_Product_CategoriesWC_Widget_Product_Departments.

结束

相关推荐

如何找到WordPress主题设置的php变量

我不熟悉PHP和WordPress,但我对python有一些经验,我的网站使用了Traveler主题。如何找到主题设置中存在的汇率变量(屏幕截图上的红色方块)?我需要用另一个功能自动更改,而不是通过主题设置手动更改。有什么可能的方法可以找到这样的变量,或者是否有存储所有主题变量的约定?我找到的唯一一段最接近的代码是截图#2(wp-content/themes/traveler/inc/st-theme-options.php),但我不确定这是否是我所需要的&;如何重新分配。谢谢