在WordPress寫個隨機文章吧

隨機文章

「隨機文章」可以增加舊文被閱讀的機會,WordPress固然有相關外掛,但外掛用多了總怕效能減低,而且掛在sidebar又感覺很不夠意思,所以我就找了幾篇文章,想要用php加SQL語法自己呈現這個功能。

所幸WordPress內建的函式足以達成這項任務。

嘗試過程

參考Muki的WordPress不用插件直接實現五種文章代碼,最後一種代碼的教學就是「隨機文章」。

Muki也是從別人的網誌看來的,對方使用的程式碼會隨機呈現整篇文章,所以我一開始是採用她改過的版本(想看我最後使用的語法,請直接拉到下面)

<?php
query_posts(array(‘orderby’ => ‘rand’, ‘showposts‘ => 2));
if (have_posts()) :
while (have_posts()) : the_post();?>
<a href=”<?php the_permalink() ?>” rel=”bookmark” title=”Permanent Link to <?php the_title(); ?>”><?php the_title(); ?></a>&nbsp;<?php comments_number(”, ‘(1)’, ‘(%)’); ?><br />
<?php endwhile;endif; ?>

 

我只想在右上角隨機顯示一篇標題並連結即可,所以更改showposts為1,並把這段程式碼放到header.php裡面,結果這一放……

我不論點哪頁都只顯示右上角隨機文章那篇而已。

 

稍稍研究後發現應該是query_posts()1query_posts的用法可以參考用query_posts列出特定範圍文章 (1)、用query_posts列出特定範圍文章 ...continue這個函式放在header.php會影響到WP抓文章,當我改放到sidebar就沒有這個問題。

由於我對這些函式都不熟,只好到處找替代方法,終於在WordPress官網的Function Reference/query posts頁面找到一段話:「If you want to create separate Loops outside of the main one, you should use get_posts() instead.」

 

一切都好辦了。

正確方法

get_posts()頁面中就有「3.4 Random posts」,基本上直接貼上微修即可,下面是我目前使用的程式碼:

<?php
$rand_posts = get_posts(‘numberposts=1&orderby=rand‘);
$post = $rand_posts[0];
?>
<a href=”<?php the_permalink(); ?>”><?php the_title(); ?></a>&nbsp;<?php comments_number(”, ‘(1)’, ‘(%)’); ?>

文章數numberposts為1,排列方法orderby為隨機,因為只要一篇文章,所以拿掉foreach直接指定陣列[0],最末加上回應數comments_number()2用法可以參照官網Function Reference/comments number頁面,三個參數分別是0、1、多於1時的呈現方式。

DONE~

如果您喜歡這篇文章的話,歡迎點擊下方按鈕為我拍手五下~

回饋由LikeCoin基金會出資,您只要註冊/登入帳(FB、Google帳號皆可)即可拍手贊助。

我不敢看自己寫的東西

備註   [ + ]

1. query_posts的用法可以參考用query_posts列出特定範圍文章 (1)用query_posts列出特定範圍文章 (2)你未必知道的query_posts使用技巧
2. 用法可以參照官網Function Reference/comments number頁面,三個參數分別是0、1、多於1時的呈現方式。

發佈留言

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