首頁  >  問答  >  主體

友善的URL結構中新增參數的WordPress方法

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

全部回覆(1)我來回復

  • P粉541551230

    P粉5415512302024-01-17 14:33:44

    在正規表示式部分,您僅指定數字條目,但在網址中傳遞「最近」等文字。也許錯誤就在這裡。請檢查它是否適用於數位輸入,如果是問題,請編輯您的表達式。另外,您指定的 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。因此,您可能需要像這些範例一樣編輯我給出的程式碼。

    回覆
    0
  • 取消回覆