簡體   English   中英

在Wordpress中為動態URL和漂亮URL使用URL重寫規則

[英]Using URL Rewrite Rules for Dynamic and Pretty URLs in Wordpress

我的book-store一頁寫着。 我希望此頁面具有不同的部分,即: categorybook 我想使用重寫規則來實現與以下示例路由匹配的漂亮網址:

example.com/book-store/category/{category_name}
example.com/book-store/book/{book_id}

我已經嘗試了以下方法,但我認為我缺少了一些重要的東西:

functions.php

add_filter('query_vars', 'add_state_var', 0, 1);
function add_state_var($vars)
{
    $vars[] = 'category_name';
    $vars[] = 'book_id';
    return $vars;
}

page-book-store.php

add_rewrite_rule('^book-store/category/([^/]*)/?', 'index.php?post_type=page&name=book-store&book-category=$matches[1]', 'top');
add_rewrite_rule('^book-store/book/([^/]*)/?', 'index.php?post_type=page&name=book-store&book-id=$matches[1]', 'top');

然后,我進入/wp-admin並在永久鏈接設置中單擊“保存”

每當我訪問網址example.com/book-store/category/fictionexample.com/book-store/book/123我都會收到404

我正在使用apache2.4和mysql。 在Apache中啟用了mod-rewrite模塊。

我在這里想念/做錯了什么?

據我所知:

  • 您有example.com/book-store/頁面
  • 您想要創建以下網址:

     example.com/book-store/category/{category_name} example.com/book-store/book/{book_id} 

    其中{category_name}{book_id}query vars

您添加到page-book-store.php文件中的代碼將不起作用,僅因為在代碼之前已查詢了url。 另外,過濾器add_filter('query_vars', 'add_state_var', 0, 1); 也不會工作。 該過濾器的優先級為10,但您使用的是0。

為了實現您的目標,請將以下代碼添加到您的functions.php文件中:

add_action('init', 'ww_rewrite_book_store');
function ww_rewrite_book_store(){
    add_rewrite_tag('%book_id%', '([^&]+)');
    add_rewrite_rule('^(book-store)/book/([^/]*)/?', 'index.php?pagename=$matches[1]&book_id=$matches[2]', 'top');

    add_rewrite_tag('%category_name%', '([^&]+)');
    add_rewrite_rule('^(book-store)/category/([^/]*)/?', 'index.php?pagename=$matches[1]&category_name=$matches[2]', 'top');
}

之后,轉到“儀表板”>“設置”>“永久鏈接”,然后單擊“ 保存更改”按鈕。

首先,我們使用add_rewrite_tag()建立查詢變量。 並使用add_rewrite_rule()使它正常工作。

例如,如果您的網址為example.com/book-store/category/some_category ,則可以在page-book-store.php文件中使用查詢vars(get {some_category} ),例如:

echo get_query_var('category_name');

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM