小左闲谈

代码提取wordpress随机文章的方法

当前位置:首页 » 学习 » 本页
In 学习  @2013-03-05

  Wordpress中随机文章的调用在博客中经常见到,今天在修改主题的时候碰到这个问题,中间遇到一些函数干扰问题,还有调用参数什么的问题,大体总结一下看到的几种方法,一并来看看:

方法一:采用wordpress内置函数,在需要的时候直接调用以下代码:

  1. <ul> 
  2. <?php $rand_posts = get_posts('numberposts=5&orderby=rand'); 
  3. foreach( $rand_posts as $post ) : ?> 
  4.    <li> 
  5.         <a href="<?php the_permalink(); ?>"><?php the_title(); ?></a> 
  6.    </li> 
  7. <?php endforeach; ?> 
  8. </ul>

  这种方法最简洁也最快速,但其中用到了get_posts函数,那么网页中记录当前文章的信息就被替换掉了,如果后面再出现调用当前文章信息的话就会出现问题,都会以这里调用的随机文章为准,这些代码放在页面的最后部分,就没问题(比如侧边栏调用随即文章),但如果放在页面中,那么后面的评论、上一篇、下一篇、标签、作者等等需要知道当前文章信息的地方都会发生错误。

方法二:用query_posts生成随机文章列表。

  1. <?php 
  2. query_posts(array(‘orderby’ =>rand, ‘showposts’ => 2)); 
  3. if (have_posts()) : 
  4. while (have_posts()) : the_post();?> 
  5. <a href=”<?php the_permalink() ?>
  6.     rel=”bookmark” 
  7.     title=<?php the_title(); ?>”><?php the_title(); ?></a>&nbsp; 
  8.     <?php comments_number(,(1),(%)); ?> 
  9. <?php endwhile;endif; ?>

  同方法一,这段代码输出之后,当前文章信息将被破坏。

方法三:在函数模版function.php中添加函数,然后调用。
在function.php文件中添加以下代码:

  1. function random_posts($posts_num=8,$before='<li>',$after='</li>'){
  2.     global $wpdb;
  3.     $sql = "SELECT ID, post_title,guid
  4.             FROM $wpdb->posts
  5.             WHERE post_status = 'publish' ";
  6.     $sql .= "AND post_title != '' ";
  7.     $sql .= "AND post_password ='' ";
  8.     $sql .= "AND post_type = 'post' ";
  9.     $sql .= "ORDER BY RAND() LIMIT 0 , $posts_num ";
  10.     $randposts = $wpdb->get_results($sql);
  11.     $output = '';
  12.     foreach ($randposts as $randpost) {
  13.         $post_title = stripslashes($randpost->post_title);
  14.         $permalink = get_permalink($randpost->ID);
  15.         $output .= $before.'<a href="'
  16.             . $permalink . '"  rel="bookmark" title="';
  17.         $output .= $post_title . '">' . $post_title . '</a>';
  18.         $output .= $after;
  19.     }
  20.     echo $output;
  21. }//random_posts()参数有$posts_num即文章数量,$before开始标签默认<li>,$after=结束标签默认</li>

然后在需要调用随机文章的地方插入下面的代码:

  1. <div class="right"> 
  2.     <h3>随便找点看看!</h3> 
  3.     <ul> 
  4.         <?php random_posts(); ?> 
  5.     </ul> 
  6. </div>

这种方法比较好,可以在页面上随意调用,不会影响到其它函数;
这个自定义的函数将会输出类似这样的html代码:

  1. <li><a href="随机文章链接地址" rel="bookmark" title="随机文章标题">随机文章标题</a><li>
    
  2. 根据你选择的数量输出随机文章数量

如果你要修改输出形式,可以试着修改自定义函数里面的output项,达到自定义链接瞄点文字等目的。

总结一下,如果你是在页面中添加随机文章,那么建议用方法三,如果在页面结束(例如有侧边栏)位置调用的话,可以使用方法一和方法二。

若无特殊声明,表示本文由:小左闲谈.原创
链接地址: http://blog.m1910.com/archives/632.html
版权所有 © 转载时请以链接形式注明作者和原始出处!
标签: , , ,   评论: 2枚  被围观 4,913 次

发表一下你的看法

2 评论 在 "代码提取wordpress随机文章的方法"

avatar
排序:   最新 | 最旧
chojemmy

大家都在研究wordpress 谷歌的blogger应该多讲点,毕竟绑定一个域名就可以在墙内访问,而且定制度高,值得推荐啊!

wpDiscuz