web-dev-qa-db-de.com

Benutzerdefinierte Weiterleitung nach Registrierung in WooCommerce

Nachdem sich ein Benutzer mithilfe des Registrierungsformulars von WooCommerce registriert hat, möchte ich ihn auf eine benutzerdefinierte Seite (z. B. meine andere Website) anstatt auf die Seite my-account umleiten.

add_action('woocommerce_registration_redirect', 'ps_wc_registration_redirect',10); 
function ps_wc_registration_redirect( $redirect_to ) {  
    $redirect_to ="http://example.com";
    return $redirect_to;
}

Der Haken oben leitet Benutzer erfolgreich weiter, wenn das Ziel eine Seite auf der aktuellen Site ist, aber wenn der Umleitungsspeicherort nicht auf der aktuellen Site ist, funktioniert es nicht.

Gibt es einen anderen Haken, der verfügbar ist, nachdem die Benutzerregistrierungsumleitung erfolgt ist?

2
Kajal Solanki

Intern verwendet WooCommerce die Funktion wp_safe_redirect() von WordPress, die keine Weiterleitungen zu externen Hosts zulässt. Um dies zu umgehen, müssen wir unseren gewünschten Host zur Whitelist hinzufügen. Die Whitelist kann mit dem unten gezeigten allowed_redirect_hosts geändert werden:

/**
 * Adds example.com to the list of allowed hosts when redirecting using wp_safe_redirect()
 *
 * @param array       $hosts An array of allowed hosts.
 * @param bool|string $Host  The parsed Host; empty if not isset.
 */
add_filter( 'allowed_redirect_hosts', 'wpse_allowed_redirect_hosts', 10, 2 );
function wpse_allowed_redirect_hosts( $hosts, $Host ) {
    $hosts[] = 'example.com';

    return $hosts;
}

Verwenden Sie den obigen Code zusammen mit Ihrem ursprünglichen Code (Anpassen des Hosts nach Bedarf), damit WooCommerce-Benutzer nach Abschluss des Registrierungsvorgangs zu einer externen Domain umgeleitet werden können.

1
Dave Romsey

versuchen Sie, die Funktion wie folgt einzustellen. Wenn Sie den Link in der Funktion manuell einstellen, sind keine Parameter für die Funktion erforderlich

function custom_registration_redirect_after_registration() {
    return home_url('/post_slug_or_page_slug');
}
add_action('woocommerce_registration_redirect', 'custom_registration_redirect_after_registration', 2);
0
Regolith