Verstecken Sie bestimmte Zahlungsmethoden für Neukunden in WooCommerce 8+
<p>Ich habe ein Skript erstellt, um zu überprüfen, ob der Benutzer eine abgeschlossene Bestellung hat. Hat der Nutzer keine abgeschlossene Bestellung, deaktiviert er die Zahlungsart „Scheck“. Dieses Skript funktioniert, aber nachdem ich es zu meiner Datei „functions.php“ hinzugefügt habe, treten beim Durchsuchen von Seiten 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', // Beitragstyp der WC-Bestellung
'post_status' => 'wc-completed' // Nur Bestellungen mit Status „abgeschlossen“
) );
//Gib „true“ zurück, 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><br /></p>