WordPress中文开发手册

  1. Home
  2. Docs
  3. WordPress中文开发手册
  4. WordPress主题开发
  5. 主题功能
  6. 核心支持的功能
  7. 置顶文章

置顶文章

一个置顶帖子的帖子将被放置在帖子顶部的顶部。 此功能仅适用于内置的帖子类型的帖子,而不适用于自定义的帖子类型。

如何置顶帖子

转到管理屏幕>帖子>添加新的或编辑
在右侧菜单中,单击发布组中的可见性编辑链接
点击粘贴此帖子到首页选项

##显示置顶的帖子

只显示第一个置顶的帖子。 至少有一个帖子必须指定为“置顶帖子”,否则循环将显示所有帖子:

$sticky = get_option( 'sticky_posts' );
$query = new WP_Query( 'p=' . $sticky[0] );

显示第一个置顶的帖子,如果没有返回最后发布的帖子:

$args = array(
        'posts_per_page' => 1,
        'post__in'  => get_option( 'sticky_posts' ),
        'ignore_sticky_posts' => 1
);
$query = new WP_Query( $args );

只显示第一个置顶帖子,如果没有返回任何内容:

$sticky = get_option( 'sticky_posts' );
$args = array(
        'posts_per_page' => 1,
        'post__in'  => $sticky,
        'ignore_sticky_posts' => 1
);
$query = new WP_Query( $args );
if ( isset( $sticky[0] ) ) {
    // insert here your stuff...
}

不显示置顶帖子

从查询中排除所有置顶的帖子:

$query = new WP_Query( array( 'post__not_in' => get_option( 'sticky_posts' ) ) );

排除类别中的置顶帖子。 返回类别中的所有帖子,但不要在顶部显示置顶帖子。 “置顶”仍将显示在自然的位置(例如按日期):

$query = new WP_Query( 'ignore_sticky_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,
        'ignore_sticky_posts' => 1,
        'post__not_in' => $sticky,
        'paged' => $paged
);
$query = new WP_Query( $args );

注意:如果希望此查询在您设置为静态首页的页面模板中工作,请使用get_query_var('page')。

<?php
/* Get all Sticky Posts */
$sticky = get_option( 'sticky_posts' );
 
/* Sort Sticky Posts, newest at the top */
rsort( $sticky );
 
/* Get top 5 Sticky Posts */
$sticky = array_slice( $sticky, 0, 5 );
 
/* Query Sticky Posts */
$query = new WP_Query( array( 'post__in' => $sticky, 'ignore_sticky_posts' => 1 ) );
?>

风格置顶帖子

为了帮助主题作者执行更简单的样式,post_class()函数用于将class =“...”添加到DIV,只需添加:

<div id="post-<?php the_ID(); ?>" <?php post_class(); ?>>

post_class()输出该div的class="whatever"片段。 这包括几个不同的价值类别:post,hentry(对于hAtom微格式页面),category-X(其中X是帖子的每个类别的块),以及tag-X(类似的,但带有标签)。 它还为标记为粘滞帖子的帖子添加了“粘性”。

.sticky { color:red; }

注意:只有在主页的第一页(is_home()为true并且is_paged()为false)的置顶帖子中才添加“sticky”类。