This is bssn’s weblog, which is about Bssn’s Internet Life, IT information, webmaters and etc.

简单实现WordPress文章置顶功能

还得说一下,WP_Query真是好东西。今天在WordPress爱好者论坛看到有人问如何实现多篇文章置顶的帖子。这下有了素材了。

对于实现WordPress文章的置顶,我的思想是将需要置顶的内容增加一些个共性,然后直接调用即可。简单点讲就是两个办法:一个是增加个分类,很多老外的主题都有用到 featured posts 这样的,肯定关注主题的朋友也都见到过,我在Bssn.Biz上面就是用这样的办法实现的,如果不想让该分类显示,可以在wp_list_categories()里用exclude将其拿掉;另外一个思路就是使用同样的一个tag,比如置顶,然后调用tag=置顶的帖子。这两个思路一样,感觉后者更方便一点,你可以轻松设置置顶一二三等等,这下功能要比dz的强大得多。

好了,那就直接说方法吧,先贴一个代码,然后再分析:

<?php  $top = new WP_Query(”tag=’置顶’&showposts=5″); ?>
<?php if ($top->have_posts()) : while ($top->have_posts()) : $top->the_post(); ?>
<a href=”<?php the_permalink() ?>” title=”<?php the_title(); ?>”><?php $short=short; echo get_post_meta($post->ID, $short,$single = true); ?></a>
<?php the_excerpt(); ?>
<?php endwhile; ?>
<?php endif; ?>

这个是调用tag=“置顶”的最新五篇帖子,显示的标题为自定义字段的“short”,链接的title=文章标题,另外还显示文章摘要(中文实现摘要建议使用Yskin’s wp-CJK-excerpt)。稍微搞得复杂了点,只是想说明它还能强悍一些!

有的人想用分类调用的方式,把 tag=置顶 改成 cat=你的分类ID 或者 category_name=目录名 就哦了。

好吧,置顶功能就这样实现了。对于自定义字段那里,那个东西你可以活用,比如把那里搞成<img src=”<?php $short=short; echo get_post_meta($post->ID, $short,$single = true); ?>” >,这样就能增加缩略图等等等等,随便想怎么搞都成。如果不想用自定义字段,一般来说可能用不着,那么就这么来:

<?php  $top = new WP_Query(”tag=’置顶’&showposts=5″); ?>
<?php if ($top->have_posts()) : while ($top->have_posts()) : $top->the_post(); ?>
<a href=”<?php the_permalink() ?>”><?php the_title(); ?></a><br>
<?php the_excerpt(); ?>
<?php endwhile; ?>
<?php endif; ?>

这样置顶彻彻底底摆平了,下面有一个问题,就是置顶后,在最新文章中还会调用该篇文章,有的朋友可能不想看到这样的情况,那么怎么来呢?

让我们看看爱吃水煮鱼的Denis同学如何来讲解此问题:避免重复内容,这里讲得已经很全面了。

好了,大功告成。

复制代码的时候请注意下符号全半角的事情。

随机日志

15个人对 “简单实现WordPress文章置顶功能” 发表了评论


  1. Yacca
    Reply to this comment said:

    写成options才好…设置起来方便

    [回复]

    Bssn Reply:

    这个东西写完也不用怎么改吧,呵呵。

    [回复]

    CHENSHIAN Reply:

    我也有同感,对于外行人来说,options最直接了,不过也失去了DIY的乐趣。

    [回复]


  2. 锐风
    Reply to this comment said:

    据说 WordPress 2.7 将继承这个功能.. - -!

    [回复]

    锐风 Reply:

    哦, 是集成..

    [回复]

    Bssn Reply:

    等他集成了再说,呵呵。

    [回复]


  3. juse
    Reply to this comment said:

    额。我菜地的说。
    请问LZ这段代码要放在哪里?模板里面吗?我放了咋不显示捏??

    [回复]

    Bssn Reply:

    那个id什么的你都修改成你的了吗?放在index.php 或者 home.php。

    [回复]

    juse Reply:

    改完了。。。一片雪白~~~

    [回复]

    Bssn Reply:

    你怎么做的,代码发来看下。


  4. stephen
    Reply to this comment said:

    这真的是个不错的方法,Thankyou

    [回复]


  5. juse
    Reply to this comment said:

    删了吧,我服了
    我在have_posts下面加的你的代码
    没有修改。。。。

    [回复]

    Bssn Reply:

    这样,你直接发我邮箱吧,在about页面有。
    另外说下你想实现调用那个分类什么的。

    [回复]


  6. seo worth
    Reply to this comment said:

    我使用了你写的wp-query,我是想在首页设置置顶文章,但是 置顶文章和最新文章出现重复,怎么可以解决呢 ?
    我是菜鸟…… 看了你所介绍的办法,鱼的写法好像是在全局中只调用一个post的id吧
    望高手帮忙给解决下哦!

    [回复]

    Bssn Reply:

    你的怎么写的?需要实现啥功能?
    最好能把代码直接发我邮箱看下。

    [回复]

Leave a Reply