0
我試圖建立一個自定義WordPress的路由看起來是這樣:WordPress的重寫規則2個子目錄深
sitename/books/{book_name}/
將指向頁,書本的single.php文件,並抓住這個名字在query_vars
sitename/books/{book_name}/{article-name}/
將指向頁圖書,Article.php文件,並在query_vars抓住這名
它可以工作1頁深(sitename/books/{book_name}/
),但有2深(sitename/books/{book_name}/{article-name}/
),它只返回1頁深。
下面是代碼:
add_action('init', 'wpse26388_rewrites_init');
function wpse26388_rewrites_init()
{
add_rewrite_rule(
'books/?([^/]*)',
'index.php?pagename=books&book_name=$matches[1]',
'top');
add_rewrite_rule(
'books/?([^/]*)/?([^/]*)',
'index.php?pagename=books-single&article_name=$matches[1]',
'top');
flush_rewrite_rules();
}
add_filter('query_vars', 'wpse26388_query_vars');
function wpse26388_query_vars($query_vars)
{
$query_vars[] = 'book_name';
$query_vars[] = 'article_name';
return $query_vars;
}
function prefix_url_rewrite_templates()
{
if (get_query_var('book_name'))
{
add_filter('template_include', function() {
return get_template_directory() . '/page-books-single.php';
});
}
if (get_query_var('article_name'))
{
add_filter('template_include', function() {
return get_template_directory() . '/page-book-article.php';
});
}
}
嗯,現在使'sitename/books/{book_name}/{article-name} /'工作如預期的那樣,但現在'sitename/books/{book_name} /'不起作用 – Packy
因爲^是起始字符,而不是結尾。我應該把美元,而且會解決這個問題。 – ppostma1
完美!我可以通過什麼資源來更好地理解這些規則?喜歡,它是什麼語言? – Packy