我想从产品类别页面中删除添加到购物车按钮和详细信息按钮,但更具体地说,仅针对具有特定自定义元数据的特定产品。
我设置了一个自定义插件来添加一个管理框,它在产品管理页面上有一个简单的复选框,如果选中该复选框,它会询问产品是否“即将推出”,它会为“即将推出”设置自定义元数据值-复选框”到“是”。如果未选中,则为“否”。
问题在于使用 Avada 插件,它添加和替换了 woocommerce 的一些操作。所以我已经能够替换实际产品页面上的添加到购物车按钮,但在类别页面上我不知道该怎么做。
function remove_woo_commerce_hooks() {
global $avada_woocommerce;
$coming_soon = get_post_meta( get_the_ID(), 'comingsoon-checkbox', true );
if ($coming_soon == 'yes'){
remove_action( 'woocommerce_after_shop_loop_item', array( $avada_woocommerce, 'template_loop_add_to_cart' ), 10 );
remove_action( 'woocommerce_after_shop_loop_item', array( $avada_woocommerce, 'show_details_button' ), 15 );
add_action( 'woocommerce_after_shop_loop_item', 'coming_soon_text', 30 );
}
}
add_action( 'after_setup_theme', 'remove_woo_commerce_hooks' );
同样在类别页面上,元数据返回空值。有没有办法做到这一点?
谢谢。
答案 0 :(得分:0)
我已经为那些寻找这个的人找到了我自己的问题。我更改了“add_action”,因为它没有在正确的时间运行以删除按钮。
add_action( 'woocommerce_shop_loop_item_title', 'remove_woo_commerce_hooks');
function remove_woo_commerce_hooks() {
global $avada_woocommerce;
$coming_soon = get_post_meta( get_the_ID(), 'comingsoon-checkbox', true );
if ($coming_soon == 'yes'){
remove_action( 'woocommerce_after_shop_loop_item', array( $avada_woocommerce, 'template_loop_add_to_cart' ), 10 );
remove_action( 'woocommerce_after_shop_loop_item', array( $avada_woocommerce, 'show_details_button' ), 15 );
add_action( 'woocommerce_after_shop_loop_item', 'coming_soon_text', 30 );
}
else{
add_action( 'woocommerce_after_shop_loop_item', array( $avada_woocommerce, 'template_loop_add_to_cart' ), 10 );
add_action( 'woocommerce_after_shop_loop_item', array( $avada_woocommerce, 'show_details_button' ), 15 );
}
}
这是coming_soon_text 函数。
function coming_soon_text(){
$coming_soon = get_post_meta( get_the_ID(), 'comingsoon-checkbox', true );
if ($coming_soon == 'yes'){
echo '<div class="comingsoontext">PRODUCT COMING SOON</div>';
}
}