我正在寻找一种从WooCommerce单个产品页面激活插件的方法,该插件显示交付的运输倒计时,但它与所有产品无关,我想在单个产品中使用复选框来打开和每个产品页面
该插件目前正在所有产品中使用主题模组的添加操作激活,以便能够更改位置,这确实不是必需的,因此如果需要,可以将其删除并替换为其他方式,以激活每个产品为基础的插件
$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;
我不知道
$this
引用的是什么类,或者如何获取它的实例,所以这是伪代码。但是,一旦您在管理中显示并保存了元字段,您就可以使用元字段的值有条件地添加 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' );
这没有考虑主题模组,只是硬编码优先级/位置。如果需要,可以在条件逻辑中添加对theme_mod的支持。