WordPress主题中不使用插件就能实现的五个常用功能

当我们在寻找一个合适的WordPress主题时,对主题所包含的基本功能有所要求的同时又希望主题不用强制使用某些插件。总结在WordPress主题的日常使用中,其实我们常用的一些功能,它们并不需要依靠插件才能实现的。譬如下面将要介绍的最新评论最热文章相关文章最新文章随机文章五个常用功能。

最新评论:

在需要添加最新评论的地方插入如下代码则可:

<?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, SUBSTRING(comment_content,1,30) 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 = '' ORDER BY comment_date_gmt DESC LIMIT 10";

$comments = $wpdb->get_results($sql);
$output = $pre_HTML;

foreach ($comments as $comment) {
$output .= "\n<li>". "<a href=\"" . get_permalink($comment->ID)."#comment-" . $comment->comment_ID . "\" title=\"on ".$comment->post_title . "\">".strip_tags($comment->comment_author)."</a>" .": " .strip_tags($comment->com_excerpt)."</li>";
}

$output .= $post_HTML;
echo $output;
?>

补充,如果你在调用上面代码中出现“syntax error”的报错,可以看下这篇【修正文章】,thanks muki 同学。

最热文章:

在需要添加评论最多的文章列表地方插入如下代码则可:

<ul class="most-comments">
<?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>

相关文章:

是的,就是连相关文章列表我们也不需要插件支持,下面的代码会根据文章中的tag标签自动判断何篇文章与当前相关,而且相关性也很强!

<ul>
<?php
$tags = wp_get_post_tags($post->ID);
if ($tags) {
$first_tag = $tags[0]->term_id;
$args=array(
'tag__in' => array($first_tag),
'post__not_in' => array($post->ID),
'showposts'=>10,
'caller_get_posts'=>1
);
$my_query = new WP_Query($args);
if( $my_query->have_posts() ) {
while ($my_query->have_posts()) : $my_query->the_post(); ?>
<li><a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title_attribute(); ?>"><?php the_title(); ?> <?php comments_number(' ','(1)','(%)'); ?></a> </li>
<?php
endwhile;
}
}
?>
</ul>

最新文章:

调用代码如下:

<?php
$limit = get_option('posts_per_page');
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
query_posts('showposts=' . $limit=7 . '&paged=' . $paged);
$wp_query->is_archive = true; $wp_query->is_home = false;
?>
<?php while(have_posts()) : the_post(); if(!($first_post == $post->ID)) : ?>
<ul>
<li><a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title_attribute(); ?>"><?php the_title(); ?></a></li>
</ul>
<?php endif; endwhile; ?>

随机文章:

<?php
query_posts(array('orderby' => 'rand', 'showposts' => 1));
if (have_posts()) :
while (have_posts()) : the_post();
the_title();
the_excerpt();
endwhile;
endif; ?>

上面的5个功能是一般WordPress主题中被使用得最为频繁,而且在一个WordPress主题中内建这些功能其实很容易。另外,使用这些简单的代码不仅让主题需要使用的插件得以减少,或者这还是那些正在寻找合适主题的朋友的愿望所在。

分类:WordPress, theme skill;标签:, , ;收藏本文的永久链接

49 Responses to “WordPress主题中不使用插件就能实现的五个常用功能”

  1. Richard 回复此留言 2009/04/15 16:57 #comment-5864

    有借鉴意义的文章,不过有几个想问下:
    a 、 在1.55版中的友情链接,自己设定友情链接分类,添加了友情链接后无法在前台显示。

    b 、 你目前的使用的这个主题的灰色边框如何实现的,我也想用这个边框。

    这次就提两个问题。下次再提其他问题。

  2. Richard 回复此留言 2009/04/15 17:44 #comment-5867

    @Jinwen 不对我的问题回应啊。哈哈,很不厚道。只回应welee的。

  3. Richard 回复此留言 2009/04/15 18:13 #comment-5870

    @Jinwen 发的那个邮箱啊,是188的邮箱还是live.com的呢

  4. welee 回复此留言 2009/04/15 16:55 #comment-5863

    先沙发再看,这是传统!!

  5. welee 回复此留言 2009/04/15 16:58 #comment-5865

    这对我来说太实用了,因为我正想当插件杀手,将插件杀杀杀 XD

  6. Jinwen 回复此留言 2009/04/15 17:01 #comment-5866

    @welee 我觉得也是,让别人下载主题还要附上一堆插件,不好;我计划把另一个主题Js Paper做成0插件主题,这样方便好多。

  7. Jinwen 回复此留言 2009/04/15 17:47 #comment-5868

    @Richard 不啊,你的问题我直接发邮件给你了,没收到?

  8. Jinwen 回复此留言 2009/04/15 18:19 #comment-5871

    @Richard live的那一个。

  9. zwwooooo 回复此留言 2009/04/15 19:14 #comment-5873

    @Jinwen 期待,我也觉得直接主题自带就好了,用一个主题还要那么多插件来支持不好。

  10. 爱月 回复此留言 2009/04/16 04:18 #comment-5894

    此文收藏,改天拿去玩~

  11. z.Yleo77 回复此留言 2009/04/16 07:07 #comment-5900

    实用的招儿,,这个收下, 看了看你博客, 把jquery用的很合适,呵呵。

  12. Poshi 回复此留言 2009/04/16 02:51 #comment-5889

    我觉得还可以再加一个,就是翻页功能,我记得sofish也提过,可以省看pagebar这个plugins..

  13. Leeiio 回复此留言 2009/04/16 03:02 #comment-5892

    怎么说呢,其实插件也就是把这些个功能代码包装起来然后弄个配置面板,如 @Poshi 所说的,其实只要把pagebar代码剥离的话写在自己的function文件里也是一样的,我现在都是从别人的插件里剥离功能代码哈~

  14. muki 回复此留言 2009/04/16 06:06 #comment-5897

    安~一直以來是你的忠實讀者
    今天看你寫了這篇文章,所以我借去引用發表。
    不過經測試之後,發現有幾個地方有點問題,最新評論出現錯誤,我自己修改了後發在我的blog
    歡迎批評指教
    http://blog.mukispace.com/2009/04/16/wordpress-five-posts-code-without-plugins/

  15. Alex 回复此留言 2009/04/16 06:56 #comment-5898

    把这些函数写到主题的函数里面蛮不错,可以少安装一些插件了。。

  16. pizzamx 回复此留言 2009/04/16 07:05 #comment-5899

    插件也不就是这些东西……

  17. Jinwen 回复此留言 2009/04/16 07:09 #comment-5901

    @Poshi and @Leeiio 翻页的功能我好象也曾经看过,但觉得它都是把插件整合的概念,而且个人觉得其实WordPress原来的翻页也够了。如果有几十个分页,还不如直接search好了,是不?
    @muki 谢谢呢,你文中提及的问题我再检查下,因为在我那没出现,不过我会把你的文章方法也添加到原文中让大家知道 ^_^

  18. zEUS. 回复此留言 2009/04/16 09:28 #comment-5903

    极品文章!

  19. Dianso 回复此留言 2009/04/16 14:43 #comment-5911

    就是复杂了些。

  20. cow 回复此留言 2009/04/16 17:26 #comment-5915

    要是換theme就麻煩了

  21. 老时 回复此留言 2009/04/17 08:11 #comment-5941

    厉害啊!

  22. mybg 回复此留言 2009/04/18 05:01 #comment-5953

    收藏了,有些用上了

  23. chenxuezai 回复此留言 2009/04/18 12:08 #comment-5973

    用得上,转载收藏了,不知道博主有什么意见没有?

  24. 吖Bee 回复此留言 2009/04/18 12:34 #comment-5975

    都很不错~~派上用场了

  25. 梦醒时分 回复此留言 2009/04/18 06:50 #comment-5954

    历害哦,收藏了,谢谢分享!!

  26. Rui 回复此留言 2009/04/19 02:30 #comment-6000

    能不用尽量不用^^

  27. zEUS. 回复此留言 2009/04/20 15:21 #comment-6075

    不知道 jinwen 有没有注意到,倘若用此文中介绍的方法输出相关文章列表时,如果把相关文章列表放在 single.php 的主循环之前,比如这个主题的左侧栏,那么文章栏里就会输出出错——不输出正常的文章,而是输出相关文章列表里的最后一篇文章。

    我发现该页面左侧栏的相关文章用到 st-related-posts 这个样式,应该是用 simple tags 插件输出的相关文章吧?

  28. iColor 回复此留言 2009/04/21 07:10 #comment-6119

    对最新评论有点兴趣,收藏一下,有时间再折腾...

  29. zEUS. 回复此留言 2009/04/21 17:39 #comment-6138

    再请教另外一个问题,在输出热评文章的时候会包含页面(有的page页会有评论),我如何从热评文章中去掉页面而只输出最热门的日志呢?

  30. zEUS. 回复此留言 2009/04/22 06:58 #comment-6148

    相关文章列表似乎只会根据文章中的第一个标签来匹配文章...

    $first_tag = $tags[0]->term_id;

    这里只取了第一个标签...

  31. Jinwen 回复此留言 2009/04/22 19:38 #comment-6160

    @zEUS. 是的,只取第一个标签来进行关联;这样也简单点,否则就是插件的功能了。
    另外我也试过去掉页面,但还没有成功的方法,就干脆不试了,也没什么问题般。

    • vivi 回复此留言 2010/02/04 14:43 #comment-12592

      如果要通过多个标签来关联文章,那段代码要怎么样修改?

    • Jinwen 回复此留言 2010/02/04 21:23 #comment-12597

      @vivi 暂时这段代码只能根据第一个标签来决定。如果要综合多个标签,最简单的方法是使用simple tag这个插件。。

  32. zEUS. 回复此留言 2009/04/23 04:09 #comment-6169

    呵呵,还想问一下~
    侧栏 rel.posts 顶部关闭广告的效果是如何做出来的呢?可否分享一下 :-)

  33. Jinwen 回复此留言 2009/04/23 07:30 #comment-6180

    @zEUS. 你没看我的【这篇】文章啊?它有提及到的。

  34. zEUS. 回复此留言 2009/04/25 10:35 #comment-6247

    @Jinwen 关于相关文章的方法,除了使用tag来关联文章外,还能不能用分类来关联呢?

  35. licream 回复此留言 2009/12/15 19:00 #comment-11674

    :smile: 都是很实用的功能哦/。。

  36. Hugo.Leen 回复此留言 2010/01/25 00:37 #comment-12444

    请问在Wordpress mu版本中也可以使用么?


The trackbacks and pingpacks: