我正在创建一个wordpress主题,我需要删除从插件类中添加的wordpress操作。
Here是插件的类,此类中添加的操作是
add_action( 'woocommerce_after_shop_loop_item', array( $this, 'add_compare_link' ), 20 );
这是我需要在主题中删除的操作。
删除该操作后,我需要在同一位置添加新操作。 新行动是:
function product_add_compare_link( $product_id = false, $args = array() ) {
extract( $args );
if ( ! $product_id ) {
global $product;
$product_id = isset( $product->id ) && $product->exists() ? $product->id : 0;
}
if ( empty( $product_id ) ) return;
$is_button = !isset( $button_or_link ) || !$button_or_link ? get_option( 'yith_woocompare_is_button' ) : $button_or_link;
$button_text = get_option( 'yith_woocompare_button_text', __( 'Compare', 'yit' ) );
$localized_button_text = function_exists( 'icl_translate' ) ? icl_translate( 'Plugins', 'plugin_yit_compare_button_text', $button_text ) : $button_text;
printf( '<a href="%s" class="%s" data-product_id="%d"><i class="icon-tasks"></i>%s</a>', $this->add_product_url( $product_id ), 'compare' . ( $is_button == 'button' ? ' add-comp' : '' ), $product_id, ( isset( $button_text ) && $button_text != 'default' ? $button_text : $localized_button_text ) );
}
add_action( 'woocommerce_after_shop_loop_item', 'product_add_compare_link', 20 );
尝试this解决方案并完全删除了该操作,但之后无法添加新操作。
我在做的是:
function kill_old_action() {
remove_anonymous_object_filter(
'woocommerce_after_shop_loop_item',
'YITH_Woocompare_Frontend',
'add_compare_link'
);
}
add_action( 'woocommerce_after_shop_loop_item', 'kill_old_action', 0 );
add_action( 'woocommerce_after_shop_loop_item', 'product_add_compare_link', 50 );
任何帮助都将受到高度赞赏。
谢谢
答案 0 :(得分:0)
我不会删除那样的动作。删除从类中添加的操作的传统方法是:
remove_action('woocommerce_after_shop_loop_item', array( $class_variable, 'add_compare_link' ), 20 );
其中类变量是类的实例化。你如何引用它取决于如何在插件中实例化类。
您可以在http://jespervanengelen.com/different-ways-of-instantiating-wordpress-plugins/了解有关实例化类的不同方法以及相应的remove_action
如果您希望在函数中使用多个输入参数,则使用add_action
时,需要指定参数个数。所以在你的情况下:
add_action( 'woocommerce_after_shop_loop_item', 'product_add_compare_link', 50, 2 );