大致代碼如下:
<?php $query = array( 'post_type' => 'post', 'orderby' => 'rand' ); $posts = new WP_Query( $query ); if ( $posts->have_posts() ) { while( $posts->have_posts() ) : $posts->the_post(); the_content(); endwhile; } wp_reset_query(); ?>
回頭來看看這一段代碼,其實很簡單,在理解了的前提下,提出需要實現 「隨機推薦」,該怎麼實現呢?
WordPress 實現隨機推薦
在幫一個朋友修改主題的時候,他要求在側邊欄加上一個隨機推薦的功能,為了減少工作量,將置頂文章默認為值得推薦的文章 (或許有其他簡便的方法),實現代碼如下:
<?php //獲取置頂文章的 ID 串 $rand_id = get_option( 'sticky_posts' ); $query = array( 'post__in' => $rand_id, 'post_type' => 'post', 'orderyby' => 'rand', 'numberposts' => 2 ); $posts = new WP_Query( $query ); if ( $posts->have_posts() ) { while( $posts->have_posts() ) : $posts->the_post(); the_content(); endwhile; } wp_reset_query(); ?>
至於添加到 widgets 這裏就不詳説了。
進階應用:隨便看看的功能實現
現在來看看 「隨便看看」 是怎麼實現的?大家不防到我的博客 (jokerliang.com) 看看導航欄 「隨便看看」 的效果。
其實實現這樣的功能也不難,首先在後台主題 「菜單」 裏,添加自定義鏈接,鏈接地址寫成 「http://yourdomain.com/random」 或者 「http://yourdomain.com/index.php?random=1」 之類的都行。
然後在當前皮膚下的 functions.php 裏添加如下代碼:
<?php add_action('init','random_add_rewrite'); add_action('template_redirect','random_template'); function random_add_rewrite() { global $wp; $wp->add_query_var('random'); add_rewrite_rule('random/?$', 'index.php?random=1', 'top'); } function random_template() { if (get_query_var('random') == 1) { $posts = get_posts('post_type=post&orderby=rand&numberposts=1'); foreach($posts as $post) { $random_link = get_permalink($post); } wp_redirect($random_link,307); //307 臨時跳轉 exit; } } ?>
至此,效果已經實現 (注:貌似 3.3 以前的老版本,需要進固定鏈接,執行一下 「保存更改」 才有效果)!當然網上也有通過新建頁面,然後用 javascript 跳轉的方法,大家也可以借鑑借鑑。