Ihr Snippet sollte gut funktionieren.
Zunächst einmal wird Ihr benutzerdefiniertes Anmeldeformular möglicherweise nicht berücksichtigt redirect_to. wp-login.phptut, aber Sie müssen das redirect_toArgument auch an die wp-login.phpFormularübermittlung senden . Zeigen Sie den Code für Ihr Anmeldeformular an.
Sie müssen vorsichtig sein, wie Sie verwenden wp_redirect. Es funktioniert durch das Senden von Headern:
<?php
/**
* Redirects to another page.
*
* @since 1.5.1
* @uses apply_filters() Calls 'wp_redirect' hook on $location and $status.
*
* @param string $location The path to redirect to
* @param int $status Status code to use
* @return bool False if $location is not set
*/
function wp_redirect($location, $status = 302) {
global $is_IIS;
$location = apply_filters('wp_redirect', $location, $status);
$status = apply_filters('wp_redirect_status', $status, $location);
if ( !$location ) // allows the wp_redirect filter to cancel a redirect
return false;
$location = wp_sanitize_redirect($location);
if ( !$is_IIS && php_sapi_name() != 'cgi-fcgi' )
status_header($status); // This causes problems on IIS and some FastCGI setups
header("Location: $location", true, $status);
}
Wenn also Teile Ihrer Seiten bereits geladen wurden und Sie keine Ausgabepufferung verwenden , funktioniert dies nicht. Headers already sentund das ganze Geschäft.
In diesem Fall ist es möglicherweise besser, nur eine Nachricht mit einem Link zum Anmeldeformular anzuzeigen oder das Formular selbst anzuzeigen (z. B. wp_login_form).
Zweitens sollten Sie immer aufrufen exitoder dienach wp_redirectdieser Verwendung wird die Ausführung des PHP-Skripts (z. B. WordPress) beendet, Header gesendet und Kaution. Andernfalls können Dinge weiter unten auf der Seite Ihre Umleitungsheader zerstören.
<?php
wp_redirect(site_url('wp-login.php'));
exit;
Wenn Sie den Host in Ihre redirect_toURL aufnehmen möchten, sollten Sie das Protokoll einschließen.
Sie können auch einfach verwenden $_SERVER['REQUEST_URI'].
<?php
$url = add_query_arg('redirect_to', $_SERVER['REQUEST_URI'], site_url('wp-login.php'));
wp_redirect($url);
exit;
wp_redirect