不限制顯示文章筆數(文章不分頁)
在自訂頁面上顯示所有文章,我們可以用 WP_Query() 輕易達成, 在 posts_per_page 參數設為 -1 即可,但有時我們需要在主題頁面上顯示所有文章,但又不想再跟資料庫要一次資料,多少會影響效能,或是開發插件,並不會去動到主題,所以就沒辦法使用 WP_Query() ,所以可以改使用 pre_get_posts 這個鉤子,去修改Main Query 參數,下方針對兩種方法作介紹。
使用 WP_Query()
<?php
$args = array(
'cat'=>array(6),
'post_status' => 'publish',
'ignore_sticky_posts' => 0,
'posts_per_page' => -1,
'paged' => 1
);
// The Query
$the_query = new WP_Query( $args );
?>
pre_get_posts_fun
使用這個鉤子,要把下列代碼,貼至主題根目錄下的 functions.php 檔案中
其中 if () 用於判斷就是不分頁,顯示所有文章的頁面
例如:
- is_home() 即在首頁執行
- !is_admin() 則醭在後台執行
- 依此類推
若沒有設定 if() 的條件,就會全站都不分頁喔
add_action( 'pre_get_posts', 'pre_get_posts_fun' );
function pre_get_posts_fun( $query ) {
if( $query->is_main_query() && !is_admin() && is_home() ) {
$query->set( 'posts_per_page', '-1' );
}
}
參考:
https://wordpress.stackexchange.com/questions/36160/posts-per-page-no-limit