在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> <?php comments_number(”, ‘(1)’, ‘(%)’); ?><br />
<?php endwhile;endif; ?>
我只想在右上角隨機顯示一篇標題並連結即可,所以更改showposts為1,並把這段程式碼放到header.php裡面,結果這一放……
我不論點哪頁都只顯示右上角隨機文章那篇而已。
稍稍研究後發現應該是query_posts()1query_posts的用法可以參考用query_posts列出特定範圍文章 (1)、用query_posts列出特定範圍文章 … Continue reading這個函式放在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> <?php comments_number(”, ‘(1)’, ‘(%)’); ?>
文章數numberposts為1,排列方法orderby為隨機,因為只要一篇文章,所以拿掉foreach直接指定陣列[0],最末加上回應數comments_number()2用法可以參照官網Function Reference/comments number頁面,三個參數分別是0、1、多於1時的呈現方式。。
DONE~
備註
↩1 | query_posts的用法可以參考用query_posts列出特定範圍文章 (1)、用query_posts列出特定範圍文章 (2)、你未必知道的query_posts使用技巧 |
---|---|
↩2 | 用法可以參照官網Function Reference/comments number頁面,三個參數分別是0、1、多於1時的呈現方式。 |