如何讓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的架構有一定認識的人會比較好做,如果你看不太懂的話,那還是改用外掛應該會比較方便,外掛有以下幾個,看您對哪個比較上手囉!

在Google News上追蹤我們最新文章
香腸
香腸

喜歡在網路上透過文字與圖片分文章教學,默默地用鍵盤烤了9年的香腸。另外還身兼阿腸接案餬口飯吃。對了,別叫我阿腸,請叫我香腸,這樣我才知道你看我部落格長大的。

文章: 1781

16 則留言

  1. 請問香腸哥
    $wp_query->query_vars[‘paged’] > 1 ? $current = $wp_query->query_vars[‘paged’] : $current = 1;
    是什麼意思…幾個紀錄分成一頁嗎?

  2. 大大:有個問題想請教您,我是wordpress的新手(可能問的問題會比較白癡,請見諒啊!),第一,文章跟網誌分頁差別在哪?我po文章,在首頁看起來都有照我的語法及排版,可是按了最新文章或是從文章分類那邊點進去,我的排版卻都不見了,只有文字,這是哪裡出了問題?第二,每篇文章下都有Leave a comment,可是卻不能動作,是要做網誌分頁還是我上傳的哪個地方沒開通?請您賜教啊~謝謝~

    香腸回應:
    網誌分頁:靜態頁面,不會出現在RSS中。
    文章:會出現在首頁的文章list
    兩者都可以選擇要留言或不留言

  3. 預設網址??
    因為我轉了空間 乾脆重設WP 所以風格用預設的
    剛好看到香腸大家發這篇好東西就試試看
    之前還是用外掛…
    無論如何都謝謝啦

    香腸回應:
    嗯嗯~ 那你就再試試看囉~

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料