3 回答
TA贡献1856条经验 获得超17个赞
对于你的问题“主题函数不是应该在任何地方调用吗?” 答案是肯定的。我可以确认此代码按我的预期工作:
function.php(子级或父级)
add_action('init', function () {
if (!is_user_logged_in() && $GLOBALS['pagenow'] !== 'wp-login.php' && preg_match('#secured-page#', $_SERVER['REQUEST_URI'])) {
wp_safe_redirect(esc_url(home_url('/wp-login.php')));
exit();
}
});
根据您的代码,我唯一能说的是,要么存在preg_match('#secured-page#', $_SERVER['REQUEST_URI'])始终为假的问题,要么存在其他代码的干扰。您能否确认您的代码成功preg_match('#secured-page#', $_SERVER['REQUEST_URI'])并返回1正确的场景?
使用 WordPress 函数而不是header()使用 PHP 函数wp_safe_redirect()。它最终会调用 PHP header(),但会执行许多其他检查和清理工作,其他代码在重定向之前可能需要先运行这些检查和清理工作。
TA贡献1921条经验 获得超9个赞
我忘记了我有一个缓存扩展,然后当我登录时,缓存没有被使用,但在其他情况下,服务器为我提供缓存的页面,看起来就像没有调用 function.php 一样。解决方案是清除缓存。
TA贡献1821条经验 获得超6个赞
您正在进行 php 标头调用,您需要直接从文件的 head 标记之间加载它header.php。以下应该立即起作用。
<?php if ( ! is_user_logged_in() && ! is_admin() ):
$redirect = esc_url( home_url( '/wp-admin' ) );
wp_redirect( $redirect );
exit;
endif; ?>
- 3 回答
- 0 关注
- 89 浏览
添加回答
举报