WordPress 文章列表我找不到不分類網址耶,我不知道到底有沒有
工作需要,我必須解決它,於是我新增了一個虛擬的網址,用來顯示分類頁,所有類別文章
https://www.example.com/category/all
用來顯示所有分類頁面,分類 category 的這個路徑支援 WordPress 原生地設定,可以修改它。
新增一個網址 rewrite 規則
/**
* 新增一個網址 rewrite 規則
* @author v123.tw <ann71727@email.com>
* @link https://v123.tw/wordpress-get_posts-exclude-uncategorized/
*/
function rewrite_category_all_rule() {
$category_base = get_option( 'category_base' ); // 尊重WordPress原生設定
$category_base = (empty($category_base))?$category_base:'category';
add_rewrite_rule('^(.*)'.$category_base.'/all?', 'index.php?category_name=all', 'top');
}
add_action('init', 'rewrite_category_all_rule',10);
這邊有個很重要的一點,建立完重寫規則,必須要到WordPress後台 設定 > 永久連結 > 儲存設定,重新建立重寫規則,如果是寫在插件上,可以使用另一種方式,在啟動插件的時候執行 flush_rewrite_rules()
重新建立重寫規則,但是請不要寫把 flush_rewrite_rules()
寫在新增重寫規則程式碼的後端,這樣會變成每刷新一次就重新建立一次重寫規則,這當然會影響效能
修改主題分類頁 main query
/**
* 修改主題 main_query
*/
function v123_customize_category_all_query( $query ) {
if( ! is_admin() && $query->is_main_query() && $query->get('category_name')=='all' ) {
$query->set( 'category_name', '');
}
}
add_action( 'pre_get_posts', 'v123_customize_category_all_query' );
設定分類對應模板
/**
* 設定全部分類對應模板
*/
function v123_template_category_all( $original_template ) {
global $wp_query;
if(get_query_var('category_name')==="all"){
$original_template = get_category_template();
}
return $original_template;
}
add_filter( 'template_include', 'v123_template_category_all' );