亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

WordPress 主題functions.php 不適用于非登錄用戶

WordPress 主題functions.php 不適用于非登錄用戶

PHP
撒科打諢 2023-08-11 17:47:19
我正在嘗試創建一個函數,如果用戶未登錄某些頁面,則將用戶重定向到登錄頁面,這是我的代碼:add_action( 'init', function(){    if ( is_user_logged_in())                                           //déjà identifié        return;        if (preg_match('#secured-page#', $_SERVER['REQUEST_URI']))    {        header( 'location: /wp-login.php' );        exit();    }});由于它不起作用,并且我嘗試了所有簡化,因此我嘗試print "hello"在父主題和子主題的開頭添加 a functions.php,如果用戶未登錄,則不會打印任何內容。主題函數不是應該在任何地方調用嗎?
查看完整描述

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(),但會執行許多其他檢查和清理工作,其他代碼在重定向之前可能需要先運行這些檢查和清理工作。


查看完整回答
反對 回復 2023-08-11
?
郎朗坤

TA貢獻1921條經驗 獲得超9個贊

我忘記了我有一個緩存擴展,然后當我登錄時,緩存沒有被使用,但在其他情況下,服務器為我提供緩存的頁面,看起來就像沒有調用 function.php 一樣。解決方案是清除緩存。



查看完整回答
反對 回復 2023-08-11
?
達令說

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; ?>


查看完整回答
反對 回復 2023-08-11
  • 3 回答
  • 0 關注
  • 136 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號