通常,每頁顯示的文章數(shù)量默認(rèn)為儀表板設(shè)置 > 閱讀 > 博客頁面至多顯示 的值,您可能希望常規(guī)的文章采用這個(gè)數(shù)量,但是自定義文章類型不要采用。要更改自定義文章類型的存檔頁面中顯示的文章數(shù)量,您可以使用帶有一些傳入?yún)?shù)的pre_get_posts操作來實(shí)現(xiàn)。
自定義文章類型存檔頁面
pre_get_posts就像在頁面上運(yùn)行的主查詢的預(yù)過濾器 – 如果您要更改這樣的頁面,最好使用pre_get_posts鉤子而不需要采用自定義的WP_Query()
add_action( 'pre_get_posts', 'tl_project_page' );
// 在項(xiàng)目存檔頁面顯示所有項(xiàng)目
function tl_project_page( $query ) {
if ( !is_admin() && $query->is_main_query() && is_post_type_archive( 'project' ) ) {
$query->set( 'posts_per_page', '-1' ); // 要顯示多少個(gè),就修改 -1 為具體的數(shù)字即可
}
}
如上,第四行的project 是自定義文章類型,通過將posts_per_page的值設(shè)置為-1,可以讓項(xiàng)目(project)存檔中顯示所有項(xiàng)目文章。如果你希望每頁顯示20個(gè),就修改 -1 為 20 即可。如果是其他文章類型,就修改 project 為你的文章類型即可。
多個(gè)自定義文章類型存檔頁面
如果您想將多個(gè)自定義文章類型存檔文章數(shù)量設(shè)置為相同的值,例如不限文章數(shù)量,您可以使用數(shù)組來包含多個(gè)自定義文章類型,比如:
is_post_type_archive( array('project', 'treatment', 'testimonial') )
自定義分類存檔頁面
同樣,如果您想更改自定義分類頁面的數(shù)量,可以參考下面的代碼:
add_action( 'pre_get_posts', 'tl_project_tax_page' );
// 在 project_category 分類法的分類存檔頁面顯示所有文章
function tl_project_tax_page( $query ) {
if ( !is_admin() && $query->is_main_query() && is_tax('project_category') ) {
$query->set( 'posts_per_page', '-1' ); // 要顯示多少個(gè),就修改 -1 為具體的數(shù)字即可
}
}
根據(jù)你的實(shí)際自定義分類法,修改 is_tax() 的值,以及將 posts_per_page 的-1改為您想要的數(shù)字即可。
使用!is_admin()是為了不影響后端顯示,如果您確實(shí)要更改后端列表,請不要使用此條件,使用 $query->is_main_query() 是為了確保不影響頁面上的其他查詢。
其他查詢參數(shù)
您可以使用多個(gè)參數(shù)來更改查詢,比如:
$query->set( 'orderby', 'title' );
$query->set( 'order', 'ASC' );
$query->set( 'post__not_in', array(7,11) ); // 排除特定id的文章
$query->set( 'cat', '-1,-1347' ); // 排除特定id的分類
$query->set( 'cat', '123' ); // 包含特定的分類
更多的參數(shù),可以參考WP_Query




