如果 AJAX 沒有請求,我需要將 WordPress 網站上的所有流量重定向到主頁,但我需要在重定向后使用請求的路徑。
我通過 wp_redirect php 和 template_redirect 鉤子進行重定向,但是我無法讀取 REQUEST_URI 以通過 cookie 或標頭或任何東西保存它。
一旦呼叫 wp_redirect,它似乎就阻止了我閱讀請求的詳細資訊,預重定向。注釋掉 wp_redirect 并且它讀起來很好。
我在這里缺少什么,或者有更好的方法嗎?我有一個通過 AJAX 加載內容的單頁網站。
add_action('template_redirect', 'pass_along_request_uri', 1);
function pass_along_request_uri() {
// $_SERVER['REQUEST_URI'] is the path as expected only if the future wp_redirect is not called...
}
add_action('template_redirect', 'redirect_to_homepage', 10);
function redirect_to_homepage() {
if (!is_front_page() && (strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) != 'xmlhttprequest')) {
wp_redirect(home_url(), 301);
exit;
}
}
編輯; 只有 2 個測驗函式,因為記錄 $_SERVER['REQUEST_URI'] 對我來說沒有意義。想如果我把日志放在優先級 1,它應該在重定向發生之前用優先級 10 函式記錄。
然而事實并非如此。無論何時何地,呼叫 wp_redirect 似乎都會清除原始請求資料。
function console_log($output, $with_script_tags = true) {
$js_code = 'console.log(' . json_encode($output, JSON_HEX_TAG) .
');';
if ($with_script_tags) {
$js_code = '<script>' . $js_code . '</script>';
}
echo $js_code;
}
console_log($_SERVER['REQUEST_URI']);
當不呼叫 wp_redirect 時,日志會顯示“/path/to/page”,一旦 wp_redirect 在鏈中,它只會輸出“/”(重定向路徑)。
我認為這與操作如何與 add_action 排隊有關?不幸的是,我不太了解 WordPress。
謝謝!
uj5u.com熱心網友回復:
您在這里的錯誤是您實際記錄此內容的方式。
在console.log(...)客戶端執行 - 但是當您在其他地方進行重定向時它無法記錄(您不能發送輸出供瀏覽器解釋,如您的腳本元素,并同時重定向。)
您所看到的是相同日志記錄代碼的結果,在重定向后通過請求執行。
實作您想要的最簡單的方法可能是將 REQUEST_URI 值粘貼到會話中。為此,您可能必須啟動一個,因為 WP 默認不使用“傳統”會話。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/449899.html
標籤:javascript php WordPress .htaccess 重定向
上一篇:使用.htaccess重定向到目錄URL,但顯示URL就像在根目錄中一樣
下一篇:單個URL上的隨機重定向
