簡體   English   中英

在woocommerce中禁用一種產品的購買

[英]Disabling the purchase for one product in woocommerce

我試圖關閉購買選定產品的可能性,但到目前為止我找到的所有材料都不適合我。 我想排除一個特定的產品,最好是通過刪除按鈕,因為我希望這個產品像任何其他產品一樣工作,但不可能被購買。

這段代碼對我來說是完美的:

add_filter('woocommerce_is_purchasable', 'filter_is_purchasable');
function filter_is_purchasable( $is_purchasable, $product ) {
    return ( $product->id == 534 ? false : $is_purchasable );
}

不幸的是它不起作用。 有任何想法嗎?

自Woocommerce 3起,這段代碼就已經過時了,因為$product->id需要替換為$product->get_id() …嘗試以下方法(其中534是相關產品ID,不會顯示添加到購物車按鈕)

add_filter('woocommerce_is_purchasable', 'purchasable_product_customizations', 10, 2 );
function purchasable_product_customizations( $is_purchasable, $product ) {
    if( in_array( $product->get_id() == 534 )
        $is_purchasable = false;

    return $is_purchasable;
}

代碼進入您的活動子主題(或活動主題)的function.php文件中。 經過測試和工作。


如果您的產品ID是可變產品

對於要禁用所有版本的可變產品ID,您將替換以下行:

if( in_array( $product->get_id() == 534 )

通過這個:

if( in_array( $product->get_parent_id() == 534 )

如果仍然無法正常工作,則是其他事情正在相互作用並造成麻煩,例如您,您的主題或插件所做的一些自定義……這也可能是因為您沒有在正確的位置添加此代碼。

代碼應根據產品類型(可變或不可變)而不同。 看看下面我用於這兩種類型的內容:

add_filter('woocommerce_is_purchasable', 'change_products_purchaseable_state', 23, 2 );
add_filter('woocommerce_variation_is_purchasable', 'change_products_purchaseable_state', 23, 2 );

function change_products_purchaseable_state( $is_purchasable, $product ) {

    $product_id = $product->get_id();

    // For product variations (from variable products)
    if ( $product->is_type('variation') ){
        $parent = wc_get_product( $product->get_parent_id() );
        $product_id = $parent->get_id();
    } 

    // Check if the Product belongs to a specific Category
    if( has_term( 51, 'product_cat', $product_id ) ) {
        return false;
    }

    return $is_purchasable;
}

此代碼應該適用於所有地方:單個產品頁面、商店頁面和其他使用 WooCommerce 模板或簡碼的地方。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM