當一個WordPress的文章超過10篇之後,相信文章分頁功能就要派上用場了,雖然一般預設功能的功能是有「上一頁」和「下一頁」的功能,不過這樣似乎不能滿足大家的胃口。平常網站看習慣了,總是覺得如果有很多頁以上的網站,應該來個數字分頁功能吧?WordPress本身有一些代表性的數字分頁外掛,功能都還不錯,不過你是否有想要優化一下網站,不要用外掛呢?
網路上不用外掛實現數字分頁的方法目前看到有兩種,一種是有人去拆解外掛的寫法將它改成單一個函式,放在佈景主題內的functions.php,然後呼叫一下就可以使用了,另一種做法是利用「paginate_links」這個內建函數去實現,兩種方法都可以,就看大家喜歡哪一種了,透過「paginate_links」實現的方法,程式碼比較短啦!
本來我是使用Pagebar2外掛實現數字分頁,但後來找到了林木木提供的語法後就捨棄外掛了。這個方法雖然程式碼看起來有點多,但若你看得懂他在幹嘛,其實對要開發PHP程式並手動寫出自己網站的分頁功能可是說蠻好用的,因為他的做法用的WordPress函數比較少,利用較多的PHP函式去存取資料庫並達成分頁的效果。
後來我在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 (搜尋結果頁面)
第3步 這時回到首頁看,效果應該就會出來了,如果沒有效果,記得關閉本來的分頁外掛或是清理一下快取喔!可是大家可能會覺得樣式很醜,那該怎麼辦呢?這部分就請大家自己改一下CSS,讓他變得比較好看一點囉!
我不知道語法加到哪?
如果您的佈景主題跟以上香腸說明的不太一樣,那可能就要請您自行找看看囉!因為每個寫主題的作者方式都不太一樣,所以在此無法一一的做解答,這樣的方式比較建議說對WordPress的架構有一定認識的人會比較好做,如果你看不太懂的話,那還是改用外掛應該會比較方便,外掛有以下幾個,看您對哪個比較上手囉!
請問可以 5篇分成一頁嗎?
一定都要10篇嗎 >< ….
篇數可從WP後台修改。
小的駑頓
不知在後台的那兒??
語法貼了,也都正常顯示,就差這一步,還請大大指點(研究好幾天了XX
控制台→設定→閱讀,網誌最多顯示
這邊可以修改顯示篇數。
原來這麼簡單 >< !! 我還一直爬文 查語法
真是傻了 !!
請問香腸哥
$wp_query->query_vars[‘paged’] > 1 ? $current = $wp_query->query_vars[‘paged’] : $current = 1;
是什麼意思…幾個紀錄分成一頁嗎?
參數後來有新版,或許可以替你解答:
http://codex.wordpress.org/Function_Reference/paginate_links
請問 我把functions.php的語法貼到我的functions.php裡面,為什麼網頁F5後變成一片白了呢?
語法可能加錯地方,如果不太可以的話,可以直接換使用分頁的外掛
請問我想把它改中文
是要在php改嗎?
(會變亂碼)
還是可以在css中改呢?
很漂亮哦,看来是没有缘份用上,可以的话发一份给我,万分感谢
大大:有個問題想請教您,我是wordpress的新手(可能問的問題會比較白癡,請見諒啊!),第一,文章跟網誌分頁差別在哪?我po文章,在首頁看起來都有照我的語法及排版,可是按了最新文章或是從文章分類那邊點進去,我的排版卻都不見了,只有文字,這是哪裡出了問題?第二,每篇文章下都有Leave a comment,可是卻不能動作,是要做網誌分頁還是我上傳的哪個地方沒開通?請您賜教啊~謝謝~
預設網址??
因為我轉了空間 乾脆重設WP 所以風格用預設的
剛好看到香腸大家發這篇好東西就試試看
之前還是用外掛…
無論如何都謝謝啦
-.-沒D我用不到 有D我才可以用到呢…
‘base’ => @add_query_arg(‘paged’,’%#%’),
差了D….
paged
這功能我也有用,外掛使用能愈少愈好囉..QQ