WordPress实现仅展示特定作者页面,其余页面自动跳转
解决WordPress特定作者页面访问限制问题
问题分析
你原代码的核心问题在于对is_author()函数的用法错误:
is_author()的参数用于指定要匹配的作者(支持ID、slug、名称或数组),不能直接传入否定判断逻辑- 代码中未定义
$author变量,导致判断逻辑完全失效
正确解决方案
我们需要先确认当前页面是作者页面,再获取当前作者的信息,最后检查该作者是否在允许访问的列表中,不在则跳转首页。以下是修正后的代码:
function redirect_author_page() { // 仅在作者页面执行逻辑 if ( is_author() ) { // 获取当前访问的作者对象 $current_author = get_queried_object(); // 允许访问的作者slug列表(可替换为display_name或ID) $allowed_authors = array('name1', 'name2'); // 检查当前作者是否不在允许列表内 if ( ! in_array( $current_author->user_nicename, $allowed_authors ) ) { // 301永久重定向到首页 wp_safe_redirect( home_url(), 301 ); exit; } } } add_action('template_redirect', 'redirect_author_page');
代码说明
is_author():无参数调用时,仅判断当前页面是否为作者归档页面get_queried_object():获取当前页面对应的作者对象,包含user_nicename(作者slug)、display_name(显示名称)、ID(用户ID)等字段,可根据需求替换判断字段- 若用作者ID判断:将
$current_author->user_nicename改为$current_author->ID,$allowed_authors改为array(1, 2)(对应作者ID) - 若用显示名称判断:改为
$current_author->display_name,数组放作者显示名
- 若用作者ID判断:将
wp_safe_redirect():WordPress推荐的安全重定向函数,home_url()比get_option('home')更符合规范exit:重定向后必须终止脚本执行,避免后续代码运行
内容的提问来源于stack exchange,提问作者Denis Volkov
相关产品推荐
相关产品推荐

