我建立了一個 Wordpress 網站,其中有一個名為「Nieuwsberichten」的頁面。 網址看起來像
https://www.example.com/newsitems
此頁面是動態的,我需要一個名為「news_page」的額外參數
https://www.example.com/news/?news_page=recent
#上面的 URL 不友好,因此我為此創建了一個重寫規則,並添加了變數「news_page」。
functions.php
function add_query_vars($vars){ $vars[] = 'news_page'; return $vars; } add_filter( 'query_vars', 'add_query_vars', 10, 1 ); function rewrite_paged(){ add_rewrite_rule('^nieuwsberichten/([0-9]+)/?', 'nieuwsberichten?news_page=$matches[1]', 'top'); } add_action('init', 'rewrite_paged');
此後我刷新了永久鏈接 選單 -> 設定 -> 永久連結 -> 儲存
如果我瀏覽到
https://www.example.com/news/recent/
它將重定向到
https://www.example.com/newsmessages/
我的程式碼中遺漏了什麼?
希望有人能幫我解決這個問題
P粉5415512302024-01-17 14:33:44
在正規表示式部分,您僅指定數字條目,但在網址中傳遞「最近」等文字。也許錯誤就在這裡。請檢查它是否適用於數位輸入,如果是問題,請編輯您的表達式。另外,您指定的 url 結構似乎不太正確。
無論如何,我不確定我的答案,所以如果您能在檢查後確認,我將不勝感激。
我現在無法檢查或測試。如果您的問題沒有解決,我會詳細研究一下。
你可以這樣使用它:
function rewrite_paged(){ add_rewrite_tag('%news_page%', '([^/]+)'); add_rewrite_rule('^nieuwsberichten/?([^/]*)$', 'nieuwsberichten?news_page=$matches[1]', 'top'); } add_action('init', 'rewrite_paged');
此外,如果您指向一個頁面,則需要使用頁面 ID 或頁面名稱。部落格或產品等。如果是,仍然會有您需要使用的參數,您應該將此網址重新導向到index.php。我留下一個例子供您理解我在說什麼,並且為了方便您查看,您可以查看您網站上的重寫內容,如下所示:
查看範例:
global $wp_rewrite; print_r($wp_rewrite);
範例:
符合頁面名稱:
add_rewrite_rule('^nieuwsberichten/?([^/]*)$', 'index.php?pagename=nieuwsberichten&news_page=$matches[1]', 'top');
符合頁面 ID:
add_rewrite_rule('^nieuwsberichten/?([^/]*)$', 'index.php?page_id=10000&news_page=$matches[1]', 'top');
如果您在 WordPress 之外安裝,您的範例是正確的,但如果它在 WordPress 內部,則所有請求都應定向到 index.php。因此,您可能需要像這些範例一樣編輯我給出的程式碼。