友善的URL結構中新增參數的WordPress方法
P粉019353247
P粉019353247 2024-01-16 16:14:09
0
1
400

我建立了一個 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粉019353247
P粉019353247

全部回覆(1)
P粉541551230

在正規表示式部分,您僅指定數字條目,但在網址中傳遞「最近」等文字。也許錯誤就在這裡。請檢查它是否適用於數位輸入,如果是問題,請編輯您的表達式。另外,您指定的 url 結構似乎不太正確。

無論如何,我不確定我的答案,所以如果您能在檢查後確認,我將不勝感激。

https://developer.wordpress.org/reference/functions/add_rewrite_tag/一个> 這可能是您應該用於添加參數的函數。此函數也不需要 query_var 函數。所以我認為你不需要使用其他功能。

我現在無法檢查或測試。如果您的問題沒有解決,我會詳細研究一下。

你可以這樣使用它:

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。因此,您可能需要像這些範例一樣編輯我給出的程式碼。

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!