手写代码实现wordpress的随机文章显示  

本想弄个插件来的,没奈何木有时间.想弄个现成的插件功能实现,我的博客结构已经够臃肿了.各种统计各种缓存…算了还是用代码实现吧.

先科普一下知识.mysql是wordpress官方标准数据库,支持结果集的随机排序查询,一个rand函数就搞定了.

实现方法一:

改functions和siderbar,在你的主题中肯定有这两个php网页.路径 wp-content/themes/your theme dir/

在function.php中加入如下方法

function random_posts($posts_num=8,$before='<li>',$after='</li>'){
    global $wpdb;
    $sql = "SELECT ID, post_title,guid
            FROM $wpdb->posts
            WHERE post_status = 'publish' ";
    $sql .= "AND post_title != '' ";
    $sql .= "AND post_password ='' ";
    $sql .= "AND post_type = 'post' ";
    $sql .= "ORDER BY RAND() LIMIT 0 , $posts_num ";
    $randposts = $wpdb->get_results($sql);
    $output = '';
    foreach ($randposts as $randpost) {
        $post_title = stripslashes($randpost->post_title);
        $permalink = get_permalink($randpost->ID);
        $output .= $before.'<a href="'
            . $permalink . '"  rel="bookmark" title="';
        $output .= $post_title . '">' . $post_title . '</a>';
        $output .= $after;
    }
    echo $output;
}

然后在siderbar中找到你需要显示的位置.这个定位问题你可以参考   WordPress修改日记–调整主题的动态边框栏

<h3>随便找点看看!</h3>
<ul>
    <?php random_posts(); ?>
</ul>

实现方法二:

使用wordpress的内置函数功能,虽然简洁,但是可能对wp的其他功能造成影响.

在siderbar中跟上面方法一样找一个位置

<ul>
<?php $rand_posts = get_posts('numberposts=8&orderby=rand');
foreach( $rand_posts as $post ) : ?>
   <li>
        <a href="<?php the_permalink(); ?>"><?php the_title(); ?></a>
   </li>
<?php endforeach; ?>
</ul>

如果你还能从网上找到的其他实现方法,非插件的你可以不用看了.插件的你也不会找到这里.祝顺利

还有越来越BSwlw的code template,丑的要死要活.

请订阅本站 RSS feed 订阅到信箱 ,欢迎 Donate 或者 上面的广告内容 支持三十岁

本文链接:手写代码实现wordpress的随机文章显示

转载声明:本站文章若无特别说明,皆为原创,转载请注明来源:三十岁,谢谢!^^


分享到:          
  • 通告关闭
  • 评论 (8)
  1. 我的天,我必须膜拜一下。。

  2. 无法实现!

    • 这是好用的代码,放入funtions.php就行了

      • Clove :
        这是好用的代码,放入funtions.php就行了

        表示不会。顺便做个记号!

        • 用ftp打开你的wp主目录下的风格目录

  3. 拿去用了。谢谢你

    • DH China 360 Browser Windows
    • 2012年03月26日

    你的网站上有这个功能

    • 有啊,现在没挂出来就是了.

评论关闭