suchen

Heim  >  Fragen und Antworten  >  Hauptteil

Das Ausblenden bestimmter Zahlungsmethoden ist für Neukunden mit WooCommerce Version 5.6+ möglich

<p>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? </p> <pre class="brush:php;toolbar:false;">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; }</pre>
P粉283559033P粉283559033496 Tage vor637

Antworte allen(1)Ich werde antworten

  • P粉985686557

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

    不需要使用更重的查询来检查客户是否有付费订单,因为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文件中(或插件中)。已测试并可用。

    Antwort
    0
  • StornierenAntwort