ホームページ >バックエンド開発 >PHPチュートリアル >以前の購入に基づいて WooCommerce 製品の購入を制限するにはどうすればよいですか?

以前の購入に基づいて WooCommerce 製品の購入を制限するにはどうすればよいですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-11-15 05:28:02360ブラウズ

How to Restrict WooCommerce Product Purchases Based on Previous Purchases?

WooCommerce でのユーザー製品の購入の確認

問題

WooCommerce では、ユーザーは特定の製品の購入を制限する必要があります (例: "c"、" d」、「e」)以前に特定の「ゲートキーパー」製品を取得した場合を除きます(例:「a」、 "b").

ソリューション

条件関数を実装することで、ユーザーが過去に必要な「ゲートキーパー」製品を購入したかどうかを判断できます。これを実現するコードは次のとおりです:

function has_bought_items() {
    $bought = false;

    $prod_arr = array( '21', '67' );

    $customer_orders = get_posts( array(
        'numberposts' => -1,
        'meta_key'    => '_customer_user',
        'meta_value'  => get_current_user_id(),
        'post_type'   => 'shop_order',
        'post_status' => 'wc-completed'
    ) );
    foreach ( $customer_orders as $customer_order ) {
        $order_id = method_exists( $order, 'get_id' ) ? $order->get_id() : $order->id;
        $order = wc_get_order( $customer_order );

        foreach ($order->get_items() as $item) {
            if ( version_compare( WC_VERSION, '3.0', '<' ) ) 
                $product_id = $item['product_id'];
            else
                $product_id = $item->get_product_id();

            if ( in_array( $product_id, $prod_arr ) ) 
                $bought = true;
        }
    }

    return $bought;
}

実装

使用法:

  • ショップ ページ: オーバーライド子テーマでloop/add-to-cart.phpを実行し、以下を適用します。ロジック:
$restricted_products = array( '20', '32', '75' );
$product_id = method_exists( $product, 'get_id' ) ? $product->get_id() : $product->id;

if ( !has_bought_items() &amp;&amp; in_array( $product_id, $restricted_products ) ) { 
    // Display inactive add-to-cart button
} else { 
    // Display normal add-to-cart button
}
  • 商品ページ: 単一商品/カートに追加フォルダー内の関連テンプレートをオーバーライドし、上記と同じロジックを使用します。

このコードを適用すると、以前の購入に基づいて特定の製品へのアクセスが効果的に制限され、ユーザー エクスペリエンスが向上し、顧客が確実にアクセスできるようになります。関連する項目のみに表示されます。

以上が以前の購入に基づいて WooCommerce 製品の購入を制限するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。