我在产品页面上添加了一个自定义按钮,该产品页面连接到产品元demo_url,这只是每个产品更改的URL(在灯箱中单独打开每个产品的实时演示)。代码非常简单:
function my_extra_button_on_product_page() {
global $product;
$demo_url = get_post_meta( get_the_ID(), 'demo_url', true );
echo '<a class="fancybox iframe" data-width="1280" data-height="720" href="'.$demo_url.'"><button style="background: lightblue; padding-left: 19px; padding-right: 19px;">Przymierz</button></a>';
}
问题是,商店里还有一些其他产品没有使用现场演示功能。它们列在不同的类别中。我希望这个按钮仅对某些产品类别可见(或两种产品类别不可见 - 无论哪种更容易)。
我想这应该通过get_cat_ID($ cat_name)来完成,但我不确定如何编写if函数,而且我通常在编码方面缺乏经验。也许这样的事情可以奏效吗?
if get_cat_ID( $cat_name ) = categoryname {
echo 'button code';
else
echo 'no button code';
endif
}
我怎样才能让它发挥作用?
由于
答案 0 :(得分:0)
您可以使用下面的钩子函数来实现它,在其中定义所有您需要的产品类别:
add_action( 'woocommerce_single_product_summary', 'custom_button_by_categories', 32 ,0 );
function custom_button_by_categories(){
global $product;
// Define your categories in this array (can be Ids, slugs or names)
$product_cats = array('clothing', 'music', 'furnitures');
if( has_term( $product_cats, 'product_cat', $product->get_id() ) ){
$demo_url = get_post_meta( $product->get_id(), 'demo_url', true );
echo '<a class="fancybox iframe" data-width="1280" data-height="720" href="'.$demo_url.'"><button style="background: lightblue; padding-left: 19px; padding-right: 19px;">Przymierz</button></a>';
}
}
代码放在活动子主题(或主题)的function.php文件中,或者放在任何插件文件中。
按钮将显示在您定义的类别下方的addtocart按钮。您不需要自定义任何模板。
如果您要删除该类别上的“添加到购物车”按钮(仅保留自定义按钮,您可以添加以下条件:
remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_add_to_cart', 30, 0);
所有代码均经过测试,适用于WooCommerce版本3 +