置顶文章是一种功能,允许将特定文章固定在文章首页顶部显示。此功能仅适用于内置的文章类型(post),不适用于自定义文章类型。
// 显示第一篇置顶文章
$sticky = get_option('sticky_posts');
$query = new WP_Query('p=' . $sticky[0]);
// 排除所有置顶文章
$args = array('post__not_in' => get_option('sticky_posts'));
$query = new WP_Query($args);
// 获取并排序置顶文章
$sticky = get_option('sticky_posts');
rsort($sticky);
$sticky = array_slice($sticky, 0, 5);
$query = new WP_Query(array(
'post__in' => $sticky,
'ignore_sticky_posts' => 1,
));A Sticky Post is the post will be placed at the top of the front page of posts. This feature is only available for the built-in post type post and not for custom post types.

Display just the first sticky post. At least one post must be designated as a “sticky post” or else the loop will display all posts:
<?php
$sticky = get_option( 'sticky_posts' );
$query = new WP_Query( 'p=' . $sticky[0] );
Display just the first sticky post, if none return the last post published:
<?php
$args = array(
'posts_per_page' => 1,
'post__in' => get_option( 'sticky_posts' ),
'ignore_sticky_posts' => 1,
);
$query = new WP_Query( $args );
Display just the first sticky post, if none return nothing:
<?php
$args = array(
'posts_per_page' => 1,
'post__in' => get_option( 'sticky_posts' ),
'ignore_sticky_posts' => 1,
);
$query = new WP_Query( $args );
if ( isset( $sticky[0] ) ) {
// Insert here your stuff...
}
Exclude all sticky posts from the query:
<?php
$args = array( 'post__not_in' => get_option( 'sticky_posts' ) );
$query = new WP_Query( $args );
Exclude sticky posts from a category. Return ALL posts within the category, but don’t show sticky posts at the top. The ‘sticky posts’ will still show in their natural position (e.g. by date):
<?php
$args = array(
'ignore_sticky_posts' => 1,
'posts_per_page' => 3,
'cat' => 6,
);
$query = new WP_Query( $args );
Exclude sticky posts from a category. Return posts within the category, but exclude sticky posts completely, and adhere to paging rules:
<?php
$args = array(
'cat' => 3,
'ignore_sticky_posts' => 1,
'post__not_in' => get_option( 'sticky_posts' ),
'paged' => get_query_var( 'paged' ) ? get_query_var( 'paged' ) : 1,
);
$query = new WP_Query( $args );
<?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,
) );
To help theme authors perform simpler styling, the post_class() function is used to add class=”…” to DIV, just add:
<div id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
The post_class() outputs the class=”whatever” piece for that div. This includes several different classes of value: post, hentry (for hAtom microformat pages), category-X (where X is the slug of every category the post is in), and tag-X (similar, but with tags). It also adds “sticky” for posts marked as Sticky Posts.
.sticky { color: red; }