对 Wordpress 日志置顶的深入探讨

作者: ligyxy | 分类: 博客技巧 | 时间: 2009-09-28

标签:, ,

67

置顶设置 - 《对 Wordpress 日志置顶问题的深入探讨》

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'=&gt;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'=&gt;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且置顶的日志。


已有 67 位大师予以指正

今天网速真慢

卡死了呀

博主高手,学习了!

不错啊!

低平板半挂车(www.hqwst.com)顶了,呵呵博客不错,来学习下。

真钱棋牌游戏(www.wins128.com)
人只要有一技之长就不会饿着,呵呵~博客不错 顶了~

我也说几句