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>