我正在尝试扩展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
班
最合适的回答,由SO网友:ahendwh2 整理而成
呼叫时parent::__construct()
从…起WC_Widget_Product_Departments
的构造函数WC_Widget_Product_Categories
立即覆盖类属性(尤其是widget_id
), 看见here at GitHub. 所以你必须扩展WC_Widget
创建一个新的小部件,然后您可以从WC_Widget_Product_Categories
到WC_Widget_Product_Departments
.