让代码更简单

wordpress判断是否是登录页面函数

重要:本文最后更新于2022-12-10 08:49:33,某些文章具有时效性,若有错误或已失效,请在下方留言或联系代码狗

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 打赏

评论 (0)

登录后评论
QQ咨询 邮件咨询 狗哥推荐