浅谈wordpress的置顶文章及其条件判断函数is_sticky
wordpress已经原生支持置顶,也就是说你只需要在编辑文章后将文章勾选为置顶即可置顶成功。开启置顶文章的方式有两种,一种是在文章编辑页面的发布板块中点开“公开度”的编辑,勾选“将文章置于首页顶端”,另一种是在“所有文章”中点击快速编辑,在右侧勾选“置顶这篇文章”,如下图所示:
默认情况下,置顶文章数不受限制,当有多篇置顶文章时按文章发布时间排序显示。如果你在文章循环输出中启用了post_class() 函数,那么在置顶文章中会自动添加名为sticky的class。
我博客最近进行了升级改版,其中有个需求是:如果在首页中是置顶文章则显示分类目录,否则不显示。那么肯定要用到条件判断标签(Conditional_Tags)函数is_sticky()了。该函数为布尔型函数,主要用于判断当前函数是否有置顶文章,如果有则返回true,否则为false。它可以带具体的文章参数用来特指某篇置顶文章,比如is_sticky('17')。
具体用法举例:
<?php if (is_sticky() && is_home()): ?> <span class=“year”>于<a href=“<?php the_permalink() ?>” title=“<? the_title_attribute();?>” rel=“nofollow”><?php the_time(‘Y年m月d日’) ?></a></span>发表在<span><?php the_category(‘, ‘) ?>中</span> <?php else: ?> <span class=“year”>发布于:<a href=“<?php the_permalink() ?>” rel=“nofollow”><?php the_time(‘Y年m月d日’) ?></a></span> <?php endif;?>
这段代码实现了我上述的需求。效果图如下:
有些同学说这我刚才的做法纯粹是多此一举啊,不需要判断是否置顶也可以实现是否在首页显示分类目录的目标。是的,但是我在首页循环中排除了显示Aside,Image,M&V以及Share这4类的文章,而我又不想再通过自定义循环文章来自定义这4类文章在首页中的显示,那怎么办呢?这就要讲到设置置顶文章更厉害的地方了,只要将某篇文章置顶,无论你有没有排除,它都会显示在首页中。所以当你的需求也像我这样,排除某些分类文章显示在首页中,但要求排除的分类中至少有一篇要显示在首页中,你可以选择置顶,如果要对其进行更具体的操作,可以使用is_sticky()函数。
文章参考:http://codex.wordpress.org/Function_Reference/is_sticky

