如何讓WordPress有隨機文章功能?(非外掛)

想讓WordPress擁有隨機文章功能,通常第一個想法就是使用外掛去達成這樣的效果,但說真的,很多功能往往很小,卻要特別去安裝外掛才能使用,對網站資源來說,確實是有些浪費的。如果懂得拆解外掛,把其中需要的部分取出來使用,這樣倒是可以省下不少資源,也可以不用外掛升級就要跟著走。

WordPress本身提供一些語法可以讓使用者進行外掛開發、新功能達成,如果你懂得一些PHP的概念,相信官方提供的Codex對你來說是非常有益的。如果不清楚Codex的人,可能就只能透過外掛達成「隨機文章」的效果。不過本篇就是要介紹如何透過代碼、不用外掛實現隨機文章的功能。


相信很多人Google一下就可以查到關於WordPress隨機文章的語法,就連WordPress官方網站的Codex頁面都有提供,但很多人使用了之後卻往往失敗,或者是說把隨機文章放在內文下方卻發生了一個好玩的問題:留言也會隨機顯示,也就是說本來是針對A文章的回應,可是卻出現在B文章的特殊現象。

之前muki寫了一篇「WordPress不用插件直接實現五種文章代碼」的文章,很多人使用了其中的隨機文章語法,當然我自己也有用,可是卻遇到前面提到的隨機迴響問題,事實上,這代碼並沒有問題,而是少了一個重設查詢的語法「wp_reset_query();」,因為少了這個語法卻影響到下方的評論區,因此加上此語法就可以順利的在內文中使用隨機文章語法囉!

如前面提到,官方也有提供隨機文章語法,不過直接使用在內文區一樣會有隨機迴響的問題,因此我稍微修改了寫法並改成function,要使用的話,直接在內文區丟個簡單的代碼就可以了。

免外掛的隨機文章語法

首先請將以下語法張貼到佈景主題中的functions.php檔案中,如果沒有此檔案請自行建立一個,不過值得注意的是,如果你是修改佈景主題現有的functions.php,記得張貼時別破壞原本的架構,否則會讓網站異常。

<?php  function get_random_post(){
 query_posts(array('orderby' => 'rand', 'showposts' => 5));
    if (have_posts()) :while (have_posts()) : the_post(); ?>
    <li><a href="<?php the_permalink() ?>" rel="nofollow"  rel="bookmark" title="閱讀: <?php the_title(); ?>"><?php the_title(); ?></a></li>
<?php endwhile; endif; wp_reset_query(); } ?>

如果要將隨機文章出現在內文區域內,請開啟single.php,將以下語法加入到您想顯示的位置,該加在檔案哪邊就請您自己測試看看,在此就不多說了。

<?php get_random_post(); ?>

隨機文章清單輸出的時候並沒有設定ul標籤,您可以在php語法前後用ul標籤包住,這樣會變得更好看一點。目前語法預設是顯示5篇隨機文章,如果您數量要進行增減,您可修改上面那個一長串語法內的「numberposts」語法後面的「5」,將它改成您要的數字就可以囉!

如何讓WordPress有隨機文章功能?(非外掛)

香腸是設定顯示8篇,至於排版的樣式大家可以刻一下CSS,讓他排起來更好看,如果懂得PHP的語法,也可以去修改上方那個function的輸出樣式。補充一下,上回介紹的隨機文章語法,如果你還沒使用,可以參考這篇文章加入一下,讓訪客可以在你網站停留久一點唷!