template_include
是一个筛选器-它接受一个参数,并且应该始终返回一个值(要包含的模板)。
你的函数不能做到这一点。它不接受任何参数,仅当条件为true时才返回值-因此,如果条件为true,则不返回值,因此在这种情况下不会包含任何模板。
修复方法如下:
add_action(\'template_include\', \'restrict_user_access\');
function restrict_user_access( $template ) {
$ipAddress = $_SERVER[\'REMOTE_ADDR\'];
if($ipAddress === \'XX.XX.XXX.XXX\') {
return "home/www/html/blog/wp-content/themes/theme-child/restrictusers.php";
}
}
return $template;
}
另一个问题是,您永远不应该在此类过滤器中使用绝对路径。有一些函数可以帮助您根据模板的文件定位模板。因此,与此相反:
return "home/www/html/blog/wp-content/themes/theme-child/restrictusers.php";
您应该这样做:
$tpl = locate_template( array( \'restrictusers.php\' ) );
if ( $tpl ) return $tpl;