Ihr Snippet sollte gut funktionieren.
Zunächst einmal wird Ihr benutzerdefiniertes Anmeldeformular möglicherweise nicht berücksichtigt redirect_to
. wp-login.php
tut, aber Sie müssen das redirect_to
Argument auch an die wp-login.php
Formularü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 sent
und 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 exit
oder die
nach wp_redirect
dieser 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_to
URL 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