我正在构建一个插件,帮助用户从 WordPress 前端注册和登录,并根据用户是否登录来隐藏和显示资源。
我遇到的一个问题是如何根据用户的登录/注销状态更改根域中显示的主页。在主题模板中,可以使用以下结构轻松实现:
if ( is_user_logged_in() ) {
// Logged-in user content
} else {
// Logged-out user content
}
但是,因为这是一个插件,所以我不希望站点管理员不得不处理他们的主题文件。到目前为止,我已经尝试添加这个来动态重写首页:
if ( is_user_logged_in() ) {
$about = get_page_by_title( 'Front Page Logged In' );
update_option( 'page_on_front', $about->ID );
update_option( 'show_on_front', 'page' );
} else {
$about = get_page_by_title( 'Front Page Logged Out' );
update_option( 'page_on_front', $about->ID );
update_option( 'show_on_front', 'page' );
}
这些update_option
函数独立工作,但包装在 if 语句中,会引发致命错误,因此网站根本不会加载。
我还尝试使用add_rewrite_rule
API 来简单地告诉 WordPress 将根域视为另一个页面。这在指定特定页面时有效,但我无法弄清楚如何使其适用于根(并且仅适用于根)URL,即使我可以,它在包装在 if 语句中时也无法正常工作。
function add_my_rule() {
if ( is_user_logged_in ) {
add_rewrite_rule('test','index.php?pagename=loggedin','top');
} else {
add_rewrite_rule('test','index.php?pagename=loggedout','top');
}
}
add_action('init', 'add_my_rule');
因此,回顾一下,我需要一种方法,如果用户登录,则显示一个页面作为首页,如果用户退出,则从插件(而不是主题文件)显示不同的页面。任何有关如何完成这项工作的见解将不胜感激!