我想在Woocommerce Product Categories Widget中添加一对类。为了确保我不会破坏任何更新,我不想编辑原始源代码,或者必须创建新的替换小部件。
从我收集的内容来看,widget_display_callback
应该能够做我需要的事情,但documentation实际上是稀疏的(实际上是不存在的)。因此,我并不确定如何提取包含应用于窗口小部件的css类名的设置。
我目前的代码如下,显然无效。任何建议都会非常感激。
add_filter( 'widget_display_callback', 'add_classes', 10, 3 );
function add_classes($settings, $widget, $args) {
if (get_class($widget) == 'WC_Widget_Product_Categories') {
$widget_ops['classname'] .= " hidden-phone hidden-tablet";
}
return $widget_ops;
}
我认为这是class-wc-widget-product-categories.php
文件中的相关代码段:
if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
class WC_Widget_Product_Categories extends WP_Widget {
var $woo_widget_cssclass;
var $woo_widget_description;
var $woo_widget_idbase;
var $woo_widget_name;
var $cat_ancestors;
var $current_cat;
/**
* constructor
*
* @access public
* @return void
*/
function WC_Widget_Product_Categories() {
/* Widget variable settings. */
$this->woo_widget_cssclass = 'woocommerce widget_product_categories';
$this->woo_widget_description = __( 'A list or dropdown of product categories.', 'woocommerce' );
$this->woo_widget_idbase = 'woocommerce_product_categories';
$this->woo_widget_name = __( 'WooCommerce Product Categories', 'woocommerce' );
/* Widget settings. */
$widget_ops = array( 'classname' => $this->woo_widget_cssclass, 'description' => $this->woo_widget_description );
/* Create the widget. */
$this->WP_Widget('product_categories', $this->woo_widget_name, $widget_ops);
}
答案 0 :(得分:-1)
尝试:
function changeclass() {
WC_Widget_Product_Categories->woo_widget_cssclass= 'whatever';
}
add_action('init', 'changeclass');
如果它不起作用,你需要进一步研究,上面的代码在哪里被吸引? (它的类是add_action('init'数组($ this,'functionname');(prob WP_WIDGET函数。
在此处查看可能的钩子:http://codex.wordpress.org/Plugin_API/Action_Reference