Das Ausblenden bestimmter Zahlungsmethoden ist für Neukunden mit WooCommerce Version 5.6+ möglich
P粉283559033
P粉283559033 2023-08-15 13:19:37
0
1
407

Ich habe ein Skript erstellt, das prüft, ob der Benutzer eine abgeschlossene Bestellung hat. Wenn der Benutzer keine abgeschlossenen Bestellungen hat, deaktiviert er die Zahlungsart „Scheck“. Diese Funktion funktioniert, aber nachdem ich sie zu meiner Datei „functions.php“ hinzugefügt habe, treten beim Durchsuchen der Seite schwerwiegende Leistungsprobleme auf. Sehen Sie Optimierungsmöglichkeiten oder wo könnte das Problem liegen?

function has_bought() { // Alle Kundenbestellungen abrufen $customer_orders = get_posts( array( 'numberposts' => -1, 'meta_key' => '_customer_user', 'meta_value' => get_current_user_id(), 'post_type' => 'shop_order', // WC-Bestellartikeltyp 'post_status' => 'wc-completed' // Nur Bestellungen mit dem Status „abgeschlossen“ einbeziehen ) ); // „true“ zurückgeben, wenn der Kunde bereits eine Bestellung hat return count( $customer_orders ) > 0 : false; } add_filter('woocommerce_available_ payment_gateways', 'customize_ payment_gateways'); Funktion anpassen_zahlung_gateways($gateways) { if (!has_bought()) { if (isset($gateways['cheque'])) { // Das Zahlungsgateway „Scheck“ kündigen unset($gateways['cheque']); } } return $gateways; }
P粉283559033
P粉283559033

Antworte allen (1)
P粉985686557

不需要使用更重的查询来检查客户是否有付费订单,因为WC_Customer类中已经有一个轻量级的内置功能,使用get_is_paying_customer()方法,该方法使用自定义的用户元数据,自WooCommerce版本5.8+起可用。

您可以使用以下方式,为新客户禁用“支票”付款:

add_filter('woocommerce_available_payment_gateways', 'cheque_payment_gateway_only_for_paying_customers'); function cheque_payment_gateway_only_for_paying_customers($gateways) { if ( ! WC()->customer->get_is_paying_customer() && isset($gateways['cheque']) ) { unset($gateways['cheque']); // 取消“支票”付款选项 } return $gateways; }

将代码放在您的子主题的functions.php文件中(或插件中)。已测试并可用。

    Neueste Downloads
    Mehr>
    Web-Effekte
    Quellcode der Website
    Website-Materialien
    Frontend-Vorlage
    Über uns Haftungsausschluss Sitemap
    Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!