WordPressの "sticky"ポストについて

Pocket

ブログで投稿が増えてくると、投稿一覧のトップ表示したいような記事もできてくる。
それをうまく制御してくれるのが、WordPressに標準 (2.7以降)で使える”Sticky Posts“だ。

使い方

投稿を公開する際に、公開状態の「編集」をクリックし、「この投稿を戦闘に固定表示」にチェックを入れる。「OK」をクリックする。

変更すると、

この”sticky”機能は、カスタム投稿タイプでも使える。
register_post_type()で定義する際に、 supports に ‘sticky’ を入れると上記同様に使える。

表示方法

queryの書き方はcodexを参照
http://codex.wordpress.org/Class_Reference/WP_Query#Sticky_Post_Parameters

stickyな投稿のみを表示する方法

$sticky = get_option( 'sticky_posts' );

すると、$stickyにはstickyなpost IDがarrayで入っている。それをpost__in などで使うと、queryでstickyなpostのみ抽出できる。カスタム投稿タイプを使う場合は、post_typeを指定する。
また、post_class() で sticky が入るので、表示させる際にcssで装飾することも可能。
参照:
http://www.wpbeginner.com/wp-tutorials/how-to-display-the-latest-sticky-posts-in-wordpress/
注意!(2013-01-12 追加)
get_option(‘sticky_posts’) をしたidには、post_statusがtrashされたものも含まれている。表示する際には
if( get_post_status($id) != ‘publish’)
continue;
などで処理するよう気をつけたい。