2009年10月09日 176条评论

用代码武装你的wordpress [part 1]

前言:

题目夸张了,说白了就是些能用代码实现的功能就不用 wordpress 那强大的、无数的、吸引人的插件了,也就是我折腾现在这个主题和 wordpress 的相关总结和记录,一方面方便自己不用到处搜和翻,一方面方便和我一样的折腾之人。当然,老鸟直接漂,现在天气转凉了,很容易漂~

自打读书起就怕语文,尤其是作文,所以文笔方面就不要过多要求,也就是说我写的文章就是通俗易懂了。- -

不管你是和我一样不太懂css和php还是一窍不通,你都可以按照步骤一步一步达到你所要的目的,只要折腾前先做好备份就万事无忧。资源来自网络,网络就要发挥共享精神嘛(你共享我用,我共享你用),当然我会尽量注明出处,不管是不是第一手。

费话一大堆,通常是有点岁数的人的毛病,上了点岁数就总是比较多感慨和废话。这不,这句也是废话,那么现在就正式开始跟题目有关的东东!

哦,忘了说,因为都是些代码,所以文章也就会变得很长,于是乎学学分几篇来记录,所以这篇是part 1(不好意思又废话了)

一、完全手动禁止Wordpress修订功能

2010.4.8 Edit: 由于WP升级很快,代码变化快,完全禁止WP修订功能还是用插件吧,别折腾这个了

这个功能有专门的插件实现,但我就是不太喜欢用插件,插件虽然方便,但看到一大堆插件拖慢速度就是不爽。

方法来源于网络,我曾经在《完全手动禁止Wordpress修订功能》说过,这里直接搬过来就ok了

  1. 打开 'wp-includes/default-filters.php' 文件,找到以下代码:
    add_action( 'pre_post_update', 'wp_save_post_revision' );
    

    这段语句主要是在每次更新文章时,调用'pre_post_update' 这个函数,来创建修订版,所以在这段语句前添加 '//'将其转为注释,这样就可以安静了。

    //add_action( 'pre_post_update', 'wp_save_post_revision' );
    
  2. 打开 'wp-admin/includes/post.php' 文件,找到以下代码:
    return _wp_put_post_revision( $_POST, true );
    

    修改为:

    return edit_post();
    

这样以后每次在修改已发布文章时,就不再会出现修订版了,而且保留了自动保存草稿的功能。不过缺点就是,每次升级Wordpress都需要重新修改,不过手动嘛就是要这样。

二、最新评论代码 - Recent Comments

较新版本

2010.7.5:《带头像显示的最新评论代码 - 蛋疼篇

2009.12.11:《带头像显示的最新评论代码 - 完善篇

--------------------------

这个来自哪里我竟然忘了,那么就是来自互联网了,呵呵。这个是支持显示 gravatar 头像的,效果可以看我博客首页侧边栏。代码如下,使用 sql 实现的,对中文支持非常好,但英文博客就还是算了。

   <h2>Recent Comments</h2>
   <ul>
    <?php
    global $wpdb;
    $sql = "SELECT DISTINCT ID, post_title, post_password, comment_ID, comment_post_ID, comment_author, comment_date_gmt, comment_approved, comment_type,comment_author_url,comment_author_email, SUBSTRING(comment_content,1,16) AS com_excerpt FROM $wpdb->comments LEFT OUTER JOIN $wpdb->posts ON ($wpdb->comments.comment_post_ID = $wpdb->posts.ID) WHERE comment_approved = '1' AND comment_type = '' AND post_password = '' AND user_id='0' ORDER BY comment_date_gmt DESC LIMIT 10";
    $comments = $wpdb->get_results($sql);
    $output = $pre_HTML;
    foreach ($comments as $comment) {$output .= "\n<li>".get_avatar(get_comment_author_email('comment_author_email'), 24).strip_tags($comment->comment_author).":<br />" . " <a href=\"" . get_permalink($comment->ID) ."#comment-" . $comment->comment_ID . "\" title=\"on " .$comment->post_title . "\">" . strip_tags($comment->com_excerpt)."</a>...</li>";}
    $output .= $post_HTML;
    echo $output;?>
   </ul>

说明:comment_content,1,16 中的16是每个留言的文字摘取数量;……ORDER BY comment_date_gmt DESC LIMIT 10 中的10是留言数量

最好用 css 自定义一下 gravatar 图片位置,可以参考一下我的:

#sidebar img.avatar{float:left;position:relative;border:1px solid #ddd;padding:1px;margin-right:5px;}

三、最新文章代码 - Recent Posts

这代码应该是来自帕兰映像的了,可以直接去老帕那看,他那好东西很多,嘿嘿。代码如下:

   <h2>Recent Posts</h2>
   <ul>
    <?php
    $myposts = get_posts('numberposts=10&offset=0&category=0');
    foreach($myposts as $post) :
    setup_postdata($post);
    ?>
    <li><span><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></span>
     <span><?php the_time('Y/m/d'); ?>.</span>
     </li>
     <?php endforeach; ?>
   </ul>

说明:numberposts 是文章数量

四、随机文章代码 - Random Posts

同上也是来自帕兰映像

   <h3>Random Posts</h3>
   <ul>
    <?php
     $rand_posts = get_posts('numberposts=10&orderby=rand');
     foreach( $rand_posts as $post ) :
    ?>
    <!--下面是你想自定义的Loop-->
    <li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li>
    <?php endforeach; ?>
   </ul>

五、最热文章代码 - Hot Posts

忘了哪里搜来的,那么又是来自互联网!很好用,代码如下:

   <h2>Hot Posts</h2>
   <ul>
     <?php $result = $wpdb->get_results("SELECT comment_count,ID,post_title FROM $wpdb->posts ORDER BY comment_count DESC LIMIT 0 , 10");
     foreach ($result as $post) {
      setup_postdata($post);
      $postid = $post->ID;
      $title = $post->post_title;
      $commentcount = $post->comment_count;
      if ($commentcount != 0) { ?>
       <li><a href="<?php echo get_permalink($postid); ?>" title="<?php echo $title ?>">
        <?php echo $title ?></a> (<?php echo $commentcount ?>)</li>
        <?php } } ?>
   </ul>

六、本月评论最多的朋友 / 读者墙

新版本:《WordPress 免插件读者墙 willin 版本

这段代码记得貌似是来自水--岩之源,但后来我去他那找又找不到关于这段代码的文章,只有那个灌水先锋插件,我想应该是后来他出了插件后就把这段代码的文章删除了。这段代码我修改过,现在只显示评论者图像的了,所以类似最近比较火的读者墙插件,效果看我的首页侧边栏最顶端。

     <?php  //本月评论最多的朋友
     $identity="comment_author";
     $passwordpost = " AND post_password=''";
     $userexclude = " AND user_id='0'";
     $approved = " AND comment_approved='1'";
     $interval = 30;
     $shownumber = 12;
     $counts = $wpdb->get_results("SELECT COUNT(" . $identity . ") AS cnt, comment_author, comment_author_url,comment_author_email
      FROM (SELECT * FROM $wpdb->comments LEFT OUTER JOIN $wpdb->posts
     ON ($wpdb->posts.ID=$wpdb->comments.comment_post_ID)
     WHERE MONTH(comment_date)=MONTH(now()) and YEAR(comment_date)=YEAR(now())" .
      $userexclude . $passwordpost . $approved . ") AS tempcmt
      GROUP BY " . $identity . " ORDER BY cnt DESC LIMIT " . $shownumber); ?>
     <h2>本月最活跃的朋友</h2>
     <ul class="ffox_most_active">
     <?php if ( $counts ) : foreach ($counts as $count) :
     echo  '<li class="mostactive">' . '<a href="'. $count->comment_author_url .
        '" title="' . $count->comment_author . ' ('. $count->cnt . '评论)">' .get_avatar($count->comment_author_email,40).'</a></li>';
     endforeach; endif;
     ?>
     </ul>

说明:$shownumber 是显示的评论作者数量,因为每周的算法不准确,所以其他参数就不说明了。

**************************************************

用代码武装你的wordpress [part 1] <--当前

用代码武装你的wordpress [part 2]

用代码武装你的wordpress [part 3]

zww
or
oooo

“用代码武装你的wordpress [part 1]”有176条评论

  1. WordPress 免插件版侧边栏读者墙 - 不知不觉™Unconscious says:

    [...] 就这样,免插件版的读者墙就实现了.其中代码和样式主要参考自zwwoOoOo. [...]

  2. [...] 第二步:准备好显示最新、最热、随机文章的代码,可以在Zwwooooo的《用代码武装你的wordpress [part 1]》一文中找到。我的《对“热评文章代码”的分析》一文提供了更精简的热评文章代码,也可参考。 [...]

  3. 爱新奇 says:

    哈 喜欢用代码来实现功能

  4. 强大,按教程刚搞了个读者墙 :mrgreen: :mrgreen:

    1. zwwooooo says:

      @易静设计
      荒淫使用共享

  5. 囧啊囧 says:

    搜索到了我折腾试试看

  6. [...] 然后是边栏的代码 主要来自zwoooo [...]

  7. 主题Squash | 采薇 says:

    [...] 2. 最新文章/随机文章/侧边栏读者墙(参考自om《用代码武装你的wordpress [part 1]》); [...]

  8. WordPress 免插件版侧边栏读者墙 | 江湖博客 says:

    [...] 就这样,免插件版的读者墙就实现了,效果可以见我的侧边栏(除了首页侧边栏)。其中代码和样式主要参考自 zwwoOoOo 的http://zww.me/archives/24671。 [...]

  9. [...] 关于主题代码化,去除不必要的插件,可以看看来自ZWW的《用代码武装你的博客系列》。好吧,最后感觉最难折腾的还是CSS,那么多浏览器,最后也懒的去兼容了 [...]

  10. 孤风 says:

    留个记号,下回好找

  11. iNove免插件wordpress读者墙 | 小严的博客 says:

    [...] ZWWoOoOo的:《用代码武装你的wordpress [part 1]》 [...]

  12. 留个记号,下回好找

  13. 主题功能大改进完工 – SErHo's Blog says:

    [...] 因为很多功能用代码来实现了,所以插件数量急剧下降,现在已经到了个位数,不过仍在努力,图片浏览插件换为了Easy FancyBox,一直在试着将它集成到主题中去,分页没有使用代码,感觉样式做不漂亮,所以使用了Paginator这个分页插件,设置非常简单,而且感觉非常酷。关于主题代码化,去除不必要的插件,可以看看来自ZWW的《用代码武装你的博客系列》。 [...]

  14. [...] 本人有那么一点“代码控”,喜欢用代码不太喜欢用插件,所以在此感谢ZWW同学的侧栏调用热门文章和随机文章的代码,以及本月最活跃朋友代码。 [...]

  15. [...] 读者墙功能最近好像比较火,一方面可以鼓励访客留言,另一方面也方便博主回访。我最初是在林木木那里看到的这个功能、接着又分别在 whisperer 和 zwwoOoOo 那里看到了这个效果,有些心动,之后又在六维博客中再次看到了免插件实现读者墙的功能,于是惹起了我折腾 WordPress 的热血沸腾。 [...]

  16. HelloMRS says:

    出现个大问题,用了随机文章代码或者热门文章代码在single页面,出现了评论在不同文章乱窜或者不显示评论的现象,请问ZWW大怎么回事,怎么解决呢!谢谢 :???:

    1. zwwooooo says:

      @HelloMRS
      这里的代码有点老,我抽个时间再整理一下吧。

    2. HelloMRS says:

      @zwwooooo
      OK,谢谢,嘿嘿 :smile:

    3. 我新手 says:

      @HelloMRS
      小洛克啊, 我的文章页面有这个 然后加入加上 也有这串代码的 其他随机文件的 就会无法显示品论了,但是我用楼主给的随机的好了,我新手

  17. [...] 因为很多功能用代码来实现了,所以插件数量急剧下降,现在已经到了个位数,不过仍在努力,代码神马的最有爱了。关于主题代码化,去除不必要的插件,可以看看来自ZWW的《用代码武装你的博客系列》 [...]

  18. herbert d says:

    :razz: Mark! 看看我的头像。

    1. zwwooooo says:

      @herbert d
      是“囧头像”哈哈哈