検索

ホームページ  >  に質問  >  本文

WooCommerce バージョン 5.6 以降を使用する新規顧客は、特定の支払い方法を非表示にすることが可能です

<p>ユーザーが注文を完了したかどうかを確認するスクリプトを作成しました。ユーザーが完了した注文を持っていない場合、支払い方法「小切手」は無効になります。この関数は機能しますが、functions.php ファイルに追加した後、ページを参照するときに重大なパフォーマンスの問題が発生します。最適化の可能性や問題がどこにあるのか考えられますか? </p> <pre class="brush:php;toolbar:false;">function has_bought() { // 顧客の注文をすべて取得する $customer_orders = get_posts( array( 'numberposts' => -1、 'meta_key' => '_customer_user', 'meta_value' => get_current_user_id(), 'post_type' => 'shop_order', // WC オーダー商品タイプ 'post_status' => 'wc-completed' // ステータスが「completed」の注文のみを含めます ) ); // 顧客がすでに注文している場合は「true」を返します return count( $customer_orders ) > 0 ? true : false; } add_filter('woocommerce_available_payment_gateways', 'customize_payment_gateways'); 関数カスタマイズ_支払い_ゲートウェイ($ゲートウェイ) { if (!has_bought()) { if (isset($gateways['cheque'])) { // 「小切手」支払いゲートウェイをキャンセルします unset($gateways['cheque']); } } $gateways を返します。 }</pre>
P粉283559033P粉283559033530日前663

全員に返信(1)返信します

  • P粉985686557

    P粉9856865572023-08-16 09:41:30

    WC_Customer クラスには get_is_paying_customer( ) カスタム ユーザー メタデータを使用するメソッドは、WooCommerce バージョン 5.8 以降で利用できます。

    次の方法を使用して、新規顧客の「小切手」支払いを無効にすることができます:

    リーリー

    コードを子テーマのfunctions.phpファイル(またはプラグイン)に配置します。テスト済みで入手可能です。

    返事
    0
  • キャンセル返事