我正在寻找一种从woocommerce单一产品页面激活插件的方法,该插件显示要交付的倒计时,但与所有产品都不相关,我想在单个产品中使用复选框打开和每个产品页面的
该插件目前正在使用theme mod中的add操作在所有产品上激活,从而能够真正更改位置,因此,如果需要,可以将其删除并以其他方式激活插件
$scfwc_render_location = get_theme_mod( 'scfwc_render_location');
switch ( $scfwc_render_location ) :
case 'scfwc_after_heading' :
add_action( 'woocommerce_single_product_summary', array( $this, 'scfwc_html_product' ), 6 );
break;
case 'scfwc_after_price' :
add_action( 'woocommerce_single_product_summary', array( $this, 'scfwc_html_product' ), 11 );
break;
case 'scfwc_after_short_desc' :
add_action( 'woocommerce_single_product_summary', array( $this, 'scfwc_html_product' ), 21 );
break;
case 'scfwc_after_add_cart' :
add_action( 'woocommerce_single_product_summary', array( $this, 'scfwc_html_product' ), 31 );
break;
case 'scfwc_after_single_product_summary' :
add_action( 'woocommerce_product_thumbnails', array( $this, 'scfwc_html_product' ), 30 );
break;
endswitch;
答案 0 :(得分:1)
我不知道$this
引用了什么类,也不知道如何获取它的实例,所以这是伪代码。但是,一旦让meta字段显示并保存在admin中,就可以使用meta字段的值有条件地添加scfwc_html_product()
方法。
function kia_conditionally_add_countdown() {
global $product;
if( $product->get_meta( '_show_countdown', true ) ) {
$my_class = somehow_get_instance_of_class();
add_action( 'woocommerce_single_product_summary', array( $my_class, 'scfwc_html_product' ), 11 );
}
}
add_action( 'woocommerce_before_single_product_summary', 'kia_conditionally_add_countdown' );
这没有考虑主题mod,只是硬编码优先级/位置。如果需要,可以在条件逻辑中添加对theme_mod的支持。