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 關注
- 136 瀏覽
添加回答
舉報