通过WordPress本身带有的置顶功能函数,可以实现很多与置顶功能有关的其他应用,比如下面的一些代码。下面函数在最新版WordPress3.2.1版测试通过。
提取某分类的最新置顶文章
代码如下:
- <?php query_posts(array('cat'=>73,'posts_per_page' => 5,'post__in' => get_option('sticky_posts'),'caller_get_posts' => 1));?>
-
<?php if(have_posts()):while(have_posts()):the_post(); ?>
-
<li><span>·</span><a href="" target="_blank"><?php echo cut_str($post->post_title,36); ?></a></li>
-
<?php endwhile;?>
-
<?php else:?>
-
<?php endif;wp_reset_query();?>
在查询中,被设为“置顶”的文章会显示在其它文章之前,除非该文章已经被caller_get_posts=1参数排除。
- array('post__in'=>get_option('sticky_posts')) —— 返回所有置顶文章的数组
- caller_get_posts=1 —— 排除返回的文章上方的置顶文章,但在返回文章列表时,以自然顺序将曾经置顶的文章安插在列表中。
返回第一篇置顶文章
-
-
$sticky=get_option('sticky_posts') ;
-
query_posts('p=' . $sticky[0]);
-
或
-
$args = array(
-
‘posts_per_page’ => 1,
-
‘post__in’ => get_option(‘sticky_posts’),
-
‘caller_get_posts’ => 1
-
);
-
query_posts($args);
-
?>
返回第一篇置顶文章;若无,则不返回任何内容
- $sticky = get_option('sticky_posts');
-
$args = array(
-
'posts_per_page' => 1,
-
'post__in' => $sticky,
-
'caller_get_posts' => 1
-
);
-
query_posts($args);
-
if($sticky[0]) {
-
// insert here your stuff...
-
}
从查询中排除所有置顶文章
query_posts(array("post__not_in" =>get_option("sticky_posts")));
返回某一分类下所有文章,但不在文章列表上方显示置顶文章。所有设为“置顶”的文章以正常顺序(如日期顺序)显示
query_posts('caller_get_posts=1&posts_per_page=3&cat=6');
返回某一分类下所有文章,完全不显示置顶文章,保留分页
- $paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
-
$sticky=get_option('sticky_posts');
-
$args=array(
-
'cat'=>3,
-
'caller_get_posts'=>1,
-
'post__not_in' => $sticky,
-
'paged'=>$paged,
-
);
-
query_posts($args);
上面是一些基本的WordPress文章置顶功能的应用代码,抛砖引玉,大家可根据需求灵活借鉴。
阅读(2689) | 评论(1) | 转发(1) |