WooCommerce 8+ で新規顧客に対して特定の支払い方法を非表示にする
P粉199248808
P粉199248808 2023-08-15 21:47:22
0
1
447

ユーザーが注文を完了したかどうかを確認するスクリプトを作成しました。ユーザーが注文を完了していない場合、支払い方法「小切手」は無効になります。このスクリプトは機能しますが、functions.php ファイルに追加した後、ページを参照するときに重大なパフォーマンスの問題が発生します。最適化の可能性や問題がどこにあるのか考えられますか?

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' // ステータスが「完了」の注文のみ ) ); // 顧客がすでに注文している場合は「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 を返します。 }


P粉199248808
P粉199248808

全員に返信 (1)
P粉156415696

顧客が支払い済みの注文を持っているかどうかを確認するためにクエリを繰り返す必要はありません。WC_Customerクラスにはすでに軽量の組み込み関数があり、get_is_paying_customer()# を使用します。##ユーザー固有のメタデータを使用するメソッド。

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

リーリー

コードを子テーマのfunctions.phpファイル(またはプラグイン)に挿入します。テスト済みで正常に動作しています。

いいねを押す+0
    最新のダウンロード
    詳細>
    ウェブエフェクト
    公式サイト
    サイト素材
    フロントエンドテンプレート
    私たちについて 免責事項 Sitemap
    PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!