Woocommerce/Wordpress(Avada 主题)删除类别页面上的添加到购物车和详细信息按钮

时间:2021-06-14 06:09:23

标签: php wordpress woocommerce

我想从产品类别页面中删除添加到购物车按钮和详细信息按钮,但更具体地说,仅针对具有特定自定义元数据的特定产品。

我设置了一个自定义插件来添加一个管理框,它在产品管理页面上有一个简单的复选框,如果选中该复选框,它会询问产品是否“即将推出”,它会为“即将推出”设置自定义元数据值-复选框”到“是”。如果未选中,则为“否”。

问题在于使用 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' );

同样在类别页面上,元数据返回空值。有没有办法做到这一点?

谢谢。

1 个答案:

答案 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>';
        
        
 }
}