So kannst du in WooCommerce Bezahloptionen nach Benutzerrollen definieren.

Nicht immer möchte man, das alle Besucher auch alle Bezahlmethoden verwenden können. Gerade wenn es Neukunden sind, ist man gewohnt etwas vorsichtiger. Standardmäßig lassen sich jedoch nur alle Zahlungsmethoden global aktivieren oder deaktivieren.

Dabei kann man das bequem mit wenigen Zeilen Code individuell anpassen.

Der fertige Code #

Wir starten wie gewohnt mit dem kompletten Code, den du einfach in die functions.php eintragen kannst.

function setPaymentOptionsByUserRole( $availablePaymentGateways ) {
	if ( is_user_logged_in() ) {

		$allowedPaymentGateways = array();
		$user = wp_get_current_user();
		
		if ( array_intersect( array('merchant'), $user->roles )) {
			$allowedPaymentGateways = array(
				'bacs',
				'direct-debit',
				'ppec_paypal',
				'paypal_plus',
			);
		}

		if(!empty($allowedPaymentGateways)) {
			foreach ( $availablePaymentGateways as $slug => $gateway ) {
				if ( ! in_array( $slug, $allowedPaymentGateways ) ) {
					unset( $availablePaymentGateways[ $slug ] );
				}
			}
		}
	}

	return $availablePaymentGateways;
}

add_filter('woocommerce_available_payment_gateways', 'setPaymentOptionsByUserRole', 90, 1);

Das ganze lässt sich endlos erweitern. In unserem Beispiel haben wir die Bezahlmethoden für alle Benutzer mit der Benutzerrolle “merchant” auf PayPal, Überweisung, Lastschrift und Kreditkarte beschränkt.

if ( array_intersect( array('merchant'), $user->roles )) {
	$allowedPaymentGateways = array(
		'bacs',
		'direct-debit',
		'ppec_paypal',
		'paypal_plus',
	);
}

Alle anderen Bezahlmethoden werden anschließend entfernt.

if(!empty($allowedPaymentGateways)) {
	foreach ( $availablePaymentGateways as $slug => $gateway ) {
		if ( ! in_array( $slug, $allowedPaymentGateways ) ) {
			unset( $availablePaymentGateways[ $slug ] );
		}
	}
}

So kannst du weitere Rollen einschränken #

Du kannst weitere Rollen hinzufügen, indem du den folgenden Block kopierst und direkt darunter einfügst.

if ( array_intersect( array('<user_role>'), $user->roles )) {
	$allowedPaymentGateways = array();
}

Ersetze ‘<user_role>’ durch die gewünschte Benutzerrolle.

WordPress BenutzerrolleSlug
Editoreditor
Authorauthor
Administratoradministrator
Contributorcontributor
Subscribersubscriber
WordPress Benutzerrollen

Das war es auch schon. Mit wenigen Zeilen Code lässt sich der Bezahlprozess bequem anpassen. Ich hoffe, der Artikel war hilfreich für dich. Falls du Fragen hast freuen wir uns natürlich, diese für dich zu beantworten.

Hinterlasse einen Kommentar

Nach oben