55

Wordpress 早在2.7版本就已经加上了文章置顶功能。当然,也有很多博主使用的是WP-Sticky插件来实现。
这里,我们将探讨有关日志置顶,与置顶文章的其他个性定制。
一、日志置顶的实现
对于WP,我一直建议要升级,少用插件。置顶文章毕竟不多,所以不建议用WP-Sticky插件。
只是有些模板可能会不支持文章置顶。如果你不想换模板,那需要参看 文竹 的这篇文章:
给旧的WordPress模板加上文章置顶功能
其主要目的就是,通过post_class()函数的判断,把要置顶的文章div添加上class="sticky"。
当然,现在使用WP2.7以下版本+旧模板的情况越来越少,绝大部分博主只要通过发布时设置一下就行。
二、怎么在代码里找到置顶文章
WP在2.7版本后加入置顶功能,同时也附带有一系列的函数可供调用。
在上文提到的通过post_class()函数,返回class="sticky"就是一种办法。
但是如果要直接修改置顶文章的样式,通过类判断是远远不够的。所以Wordpress提供了is_sticky()函数。
和is_home()函数一样,它提供了一个便捷的判断。
在主循环内部添加
1 | if(is_sticky()) |
判断,就能实现对置顶文章的修改。
或者,可以在主循环之前使用
1 | <?php query_posts(array('post__in'=>get_option('sticky_posts'))); ?> |
使得接下来的循环只返回置顶文章。
剩下文章,不能使用post__not_in参数。但可以新建一个循环,并在前面添加
1 | <?php query_posts('caller_get_posts=1'); ?> |
P.S.所谓主循环之前,就是在index.php的
1 | <?php while (have_posts()) : the_post(); ?> |
这一行前面。
三、对置顶文章的个性设置
因为有了class="sticky",个性设置变得相当简单。
对于普通的颜色设定,CSS设置足够,许多模板也会有添加,例如:
1 2 3 4 5 | .sticky { background: #ff0000; border: 1px solid #ccc; } |
对于进阶的设置,例如对文章输出的设置,则需要对主循环进行判断。
例子1,对所有置顶文章展开显示(即忽略More标记):
1 2 3 4 5 | <?php if(is_sticky()) : ?> <?php $more = 1; the_content('',FALSE,''); ?> <?php else : ?> <?php $more = 0; the_content('',FALSE,''); ?> <?php endif; ?> |
例子2,我们的访客phone card留言想实现置顶文章在所有页面展开显示。可以这样:
做两个循环,第一个循环前添加
1 | <?php query_posts(array('post__in'=>get_option('sticky_posts'))); ?> |
第二个循环前添加
1 | <?php query_posts('caller_get_posts=1'); ?> |
并对整个循环添加判断
1 | <?php if (!is_sticky()) : ?> |
这样,就实现了在所有页面显示置顶文章,包括主页的第二页等分页。
例子3,编辑特定置顶文章:
通过设定is_sticky()的参数,可以挑出特定的文章。例如
1 | <?php if(is_sticky('17')) : ?> |
能选出ID为17且置顶的日志。







