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

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

DDD
リリース: 2024-11-14 13:16:02
オリジナル
182 人が閲覧しました

How can I restrict product access based on previous purchases in WooCommerce?

製品アクセス制御のための顧客購入の決定

問題ステートメント:

WooCommerce では、次の機能を制限する必要があります。顧客が以前に製品 a または b を購入したことがない限り、特定の製品 (c、d、e) を購入します。この条件が満たされる場合、製品 c、d、および e の購入ボタンが有効になるはずです。それ以外の場合は、無効のままにする必要があります。

解決策:

顧客が指定された製品を以前に購入したかどうかを確認する条件付き関数を実装し、この関数を活用して可視性と制限付きの購入ボタンの機能products.

コード:

次の条件関数をfunctions.php ファイルに追加します:

function has_bought_items() {
    $bought = false;

    // Specify the product IDs of restricted products
    $prod_arr = array( '21', '67' );

    // Retrieve all customer orders
    $customer_orders = get_posts( array(
        'numberposts' => -1,
        'meta_key' => '_customer_user',
        'meta_value' => get_current_user_id(),
        'post_type' => 'shop_order', // WC orders post type
        'post_status' => 'wc-completed' // Only orders with status "completed"
    ) );

    foreach($customer_orders as $customer_order) {
        // Compatibility for WooCommerce 3+
        $order_id = method_exists( $order, 'get_id' ) ? $order->get_id() : $order->id;
        $order = wc_get_order( $customer_order );

        // Iterate through purchased products in the order
        foreach($order->get_items() as $item) {
            // Compatibility for WC 3+
            if(version_compare(WC_VERSION, '3.0', '<')){
                $product_id = $item['product_id'];
            }else{
                $product_id = $item->get_product_id();
            }

            // Check if any of the designated products were purchased
            if(in_array($product_id, $prod_arr)){
                $bought = true;
            }
        }
    }

    // Return true if a designated product was purchased
    return $bought;
}
ログイン後にコピー

使用法:

関連する WooCommerce テンプレート内 (例: loop/add-to-cart.php) を使用すると、has_bought_items() 関数を使用して、制限された商品の購入ボタンの表示と機能を制御できます。

// Replace restricted product IDs as needed
$restricted_products = array( '20', '32', '75' );

// Compatibility for WC +3
$product_id = method_exists( $product, 'get_id' ) ? $product->get_id() : $product->id;

// Customer has not purchased a designated product for restricted products
if( !has_bought_items() && in_array( $product_id, $restricted_products ) ) {
    // Display inactive add-to-cart button with custom text
}else{
    // Display normal add-to-cart button
}
ログイン後にコピー

この条件チェックを実装することで、効果的に次のことができます。指定された購入要件を満たすまで、顧客が制限された製品を購入できないようにします。

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート