Đoạn mã của bạn sẽ hoạt động tốt.
Trước hết, hình thức đăng nhập tùy chỉnh của bạn có thể không tôn trọng redirect_to. wp-login.phpkhông, nhưng bạn cũng sẽ phải gửi redirect_tođối số để wp-login.phpgửi biểu mẫu. Hiển thị mã cho mẫu đăng nhập của bạn.
Bạn cần cẩn thận với cách bạn sử dụng wp_redirect. Nó hoạt động bằng cách gửi các tiêu đề:
<?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);
}
Vì vậy, nếu các phần của trang của bạn đã được tải và bạn không sử dụng bộ đệm đầu ra , nó sẽ không hoạt động. Headers already sentvà tất cả các doanh nghiệp đó.
Nếu đó là trường hợp bạn có thể tốt hơn là chỉ hiển thị một thông báo có liên kết đến biểu mẫu đăng nhập hoặc hiển thị biểu mẫu đó (ví dụ. wp_login_form).
Thứ hai, bạn phải luôn gọi exithoặc diesau khi sử dụng wp_redirectđiều này khiến cho việc thực thi tập lệnh PHP (ví dụ: WordPress) kết thúc, gửi tiêu đề và bảo lãnh. Nếu không, những thứ tiếp theo xuống trang có thể giết chết các tiêu đề chuyển hướng của bạn.
<?php
wp_redirect(site_url('wp-login.php'));
exit;
Cuối cùng, nếu bạn định đưa máy chủ vào redirect_toURL của mình, bạn nên bao gồm giao thức.
Bạn cũng có thể chỉ cần sử dụng $_SERVER['REQUEST_URI'].
<?php
$url = add_query_arg('redirect_to', $_SERVER['REQUEST_URI'], site_url('wp-login.php'));
wp_redirect($url);
exit;
wp_redirectđể xem liệu đầu ra đã bắt đầu chưa, v.v.