如何讓WordPress有數字分頁功能?(非外掛)

當一個WordPress的文章超過10篇之後,相信文章分頁功能就要派上用場了,雖然一般預設功能的功能是有「上一頁」和「下一頁」的功能,不過這樣似乎不能滿足大家的胃口。平常網站看習慣了,總是覺得如果有很多頁以上的網站,應該來個數字分頁功能吧?WordPress本身有一些代表性的數字分頁外掛,功能都還不錯,不過你是否有想要優化一下網站,不要用外掛呢?

網路上不用外掛實現數字分頁的方法目前看到有兩種,一種是有人去拆解外掛的寫法將它改成單一個函式,放在佈景主題內的functions.php,然後呼叫一下就可以使用了,另一種做法是利用「paginate_links」這個內建函數去實現,兩種方法都可以,就看大家喜歡哪一種了,透過「paginate_links」實現的方法,程式碼比較短啦!

本來我是使用Pagebar2外掛實現數字分頁,但後來找到了林木木提供的語法後就捨棄外掛了。這個方法雖然程式碼看起來有點多,但若你看得懂他在幹嘛,其實對要開發PHP程式並手動寫出自己網站的分頁功能可是說蠻好用的,因為他的做法用的WordPress函數比較少,利用較多的PHP函式去存取資料庫並達成分頁的效果。

如何讓WordPress有數字分頁功能?(非外掛)

後來我在Denis那邊看到另一種做法,利用WordPress的函式「paginate_links」去達成數字分頁的效果,程式碼比較精簡一些,盡量使用內部函式來存取,因此後來就改使用這樣的方式去達成效果了,目前用了一陣子,感覺還不錯啦!外掛能少就少,畢竟很多外掛發展到後期都多了一堆沒用的功能,浪費了一些系統資源。

WordPress數字分頁功能

目前我自己是使用這個方法,想說盡量使用內建的函式比較好,因為WordPress既然有開發這樣的函示可以使用,就代表有其意義存在,就看大家喜歡用哪種方式囉!

第1步 請把以下語法張貼到您目前在用的佈景主題中functions.php這個檔案,如果檔案不存在請自行建立,並將程式碼貼上。

<?php
function native_pagenavi(){

    global $wp_query, $wp_rewrite;           
    $wp_query->query_vars['paged'] > 1 ? $current = $wp_query->query_vars['paged'] : $current = 1;

    $pagination = array(
      'base' => @add_query_arg('page','%#%'),
      'format' => '',
      'total' => $wp_query->max_num_pages,
      'current' => $current,
      'prev_text' => 'Prev',
      'next_text' => 'Next'
    );

     if( $wp_rewrite->using_permalinks() )
        $pagination['base'] = user_trailingslashit( trailingslashit( remove_query_arg('s',get_pagenum_link(1) ) ) . 'page/%#%/', 'paged');

     if( !empty($wp_query->query_vars['s']) )
        $pagination['add_args'] = array('s'=>get_query_var('s'));

    echo paginate_links($pagination);
} ?>

第2步 接著在要顯示數字分頁的頁面貼上以下語法:

<?php native_pagenavi(); ?>

通常會顯示數字分頁的頁面如下,看你佈景有哪些就加到那些檔案。那檔案內要加入到哪邊呢?如果以最一般規格的佈景主題的話,就是加入到「<?php endwhile; ?>」之後,但是要在「<?php endif; ?>」之前。

  • index.php (首頁)
  • caregory.php (分類頁面)
  • archive.php (彙整頁面)
  • search.php (搜尋結果頁面)

如何讓WordPress有數字分頁功能?(非外掛)

第3步 這時回到首頁看,效果應該就會出來了,如果沒有效果,記得關閉本來的分頁外掛或是清理一下快取喔!可是大家可能會覺得樣式很醜,那該怎麼辦呢?這部分就請大家自己改一下CSS,讓他變得比較好看一點囉!

我不知道語法加到哪?

如果您的佈景主題跟以上香腸說明的不太一樣,那可能就要請您自行找看看囉!因為每個寫主題的作者方式都不太一樣,所以在此無法一一的做解答,這樣的方式比較建議說對WordPress的架構有一定認識的人會比較好做,如果你看不太懂的話,那還是改用外掛應該會比較方便,外掛有以下幾個,看您對哪個比較上手囉!