WooCommerce 8+에서 신규 고객을 위한 특정 결제 수단 숨기기
P粉199248808
P粉199248808 2023-08-15 21:47:22
0
1
444

사용자가 주문을 완료했는지 확인하는 스크립트를 만들었습니다. 사용자가 완료된 주문이 없으면 결제 수단 '수표'가 비활성화됩니다. 이 스크립트는 작동하지만, 이를 function.php 파일에 추가한 후 페이지를 탐색할 때 심각한 성능 문제가 발생합니다. 최적화 가능성이 보이시나요? 아니면 문제가 있는 부분이 있나요?

함수 has_bought() { // 모든 고객 주문을 가져옵니다. $customer_orders = get_posts( 배열( '번호 포스트' => -1, 'meta_key' => '_customer_user', 'meta_value' => get_current_user_id(), 'post_type' => 'shop_order', // WC 주문 포스트 유형 'post_status' => 'wc-completed' // 상태가 "완료"인 주문만 ) ); // 고객이 이미 주문한 경우 "true"를 반환합니다. 반환 횟수( $customer_orders ) > 0 ? true: false; } add_filter('woocommerce_available_pay_gateways', 'customize_pay_gateways'); 함수customize_pay_gateways($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()사용자별 메타데이터를 사용하는 방법입니다.

신규 고객에 대한 "수표" 결제 방법을 비활성화하려면 다음과 같이 사용할 수 있습니다.

으아악

코드를 하위 테마의 function.php 파일(또는 플러그인)에 넣으세요. 테스트를 거쳤으며 잘 작동합니다.

    최신 다운로드
    더>
    웹 효과
    웹사이트 소스 코드
    웹사이트 자료
    프론트엔드 템플릿
    회사 소개 부인 성명 Sitemap
    PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!