我尝试使用以下代码修改site_URL和wp_redirect:
<?php
add_filter( 'site_url', 'my_prefix_site_url', 10, 2 );
add_filter( 'wp_redirect', 'my_prefix_wp_redirect' );
function my_prefix_site_url( $url, $scheme ) {
return my_prefix_modify_url( $url, $scheme );
}
function my_prefix_wp_redirect( $url ) {
return my_prefix_modify_url( $url, null );
}
function my_prefix_modify_url( $url, $scheme = null ) {
$current_url = isset( $_SERVER['PHP_SELF'] ) ? sanitize_text_field( wp_unslush( $_SERVER['PHP_SELF'] ) ) : '';
if ( ! strpos( $current_url, 'wp-admin' ) && ! is_user_logged_in() ) {
return '/';
}
return $url;
}
但是遇到了以下错误。
致命错误:未捕获的错误:调用未定义的函数is_user_logged_in()
经过一些研究,我发现wp_redirect在调用pluggable.php文件之前被调用,而该文件包含is_user_logged_in()函数。因此,我继续在我的代码中包含它,如下所示:
if ( ! function_exists( 'is_user_logged_in' ) ) {
require_once ABSPATH . WPINC . '/pluggable.php';
}
在包含了这个文件之后,代码可以正常工作,但是一些其他插件与之冲突,因为它们无法覆盖pluggable函数。
简短的问题:在加载pluggable.php之前,我如何在wp_redirect级别验证用户是否已登录。
提前感谢您的回答。
Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号