wordpress6.1新增了一个用于判断页面是否是登录页的函数 is_login()
,这个函数其实是建立在wp_login_url
这个函数上的,下面一起来看看这两个wordpress函数。
is_login()
确定当前页是否是登录页,是返回true,不是返回false。
函数原型
复制
function is_login() { return false !== stripos( wp_login_url(), $_SERVER['SCRIPT_NAME'] ); }
wp_login_url
wp_login_url( string $redirect = ”, bool $force_reauth = false )
生成登录页地址
参数
$redirect :可选,登录后的重定向路径(绝对路径)。默认空“”
$force_reauth 可选,是否强制重新授权,即使存在 cookie。默认 false
返回值
返回登录url
$redirect 参数 必须 是绝对的,例如 https://www.daimadog.org/dmd。为获得最佳结果,请使用 site_url( ‘/dmd’ )。
函数原型
复制
function wp_login_url( $redirect = '', $force_reauth = false ) { $login_url = site_url( 'wp-login.php', 'login' ); if ( ! empty( $redirect ) ) { $login_url = add_query_arg( 'redirect_to', urlencode( $redirect ), $login_url ); } if ( $force_reauth ) { $login_url = add_query_arg( 'reauth', '1', $login_url ); } /** * Filters the login URL. * * @since 2.8.0 * @since 4.2.0 The `$force_reauth` parameter was added. * * @param string $login_url The login URL. Not HTML-encoded. * @param string $redirect The path to redirect to on login, if supplied. * @param bool $force_reauth Whether to force reauthorization, even if a cookie is present. */ return apply_filters( 'login_url', $login_url, $redirect, $force_reauth ); }
简单使用
登录并重定向到当前页
复制
<a href="<?php echo esc_url( wp_login_url( get_permalink() ) ); ?>" alt="<?php esc_attr_e( 'Login', 'textdomain' ); ?>"> <?php _e( 'Login', 'textdomain' ); ?> </a>
对于通过上面的当前 URL 的重定向示例get_permalink()
,请注意如果请求是 404,get_permalink()
将返回false
,因此您可能想要获取实际的 URL。
即使当前 URL 是 404,仍然重定向到您当前的 URL 仍然有用的场景是,如果当前 URL 是私人帖子,并且您的用户尚未登录 – 因此最终出现 404。
在这种情况下,如果您向他们显示登录链接,他们应该被重定向回当前 URL(即私人帖子),以便他们最终可以访问它。
复制
<?php $current_url = home_url( add_query_arg( [], $GLOBALS['wp']->request ) ); ?> <a href="<?php echo esc_url( wp_login_url( $current_url ) ); ?>"><?php _e( 'Log in' ) ?></a>
登录并重定向到主页
复制
<a href="<?php echo esc_url( wp_login_url( home_url() ) ); ?>" alt="<?php esc_attr_e( 'Login', 'textdomain' ); ?>"> <?php _e( 'Login', 'textdomain' ); ?> </a>
评论 (0)