• 赤色のリンクは、まだ日本語Codexに存在しないページ・画像です。英語版と併せてご覧ください。(詳細

このWikiはいつでも誰でも編集できます

先頭固定表示の投稿

提供: WordPress Codex 日本語版
移動先: 案内検索

この項目「先頭固定表示の投稿」は、翻訳チェック待ちの項目です。加筆、訂正などを通して、Codex ドキュメンテーションにご協力下さい。

先頭固定表示の投稿(Sticky Posts)は バージョン 2.7 で導入された機能です。 管理画面 > 投稿 > 新規投稿を追加 画面にチェックボックスがあります(公開メタボックスの公開状態の中です。チェックボックスを見るには編集をクリックします)。チェックを入れるとその投稿は、新しい投稿が公開されるまで、フロントページの先頭に表示されます。この機能は 組み込みの post 投稿タイプのみで利用可能 であり、カスタム投稿タイプは対象外であることに注意してください。

テンプレートタグ
テンプレートタグ

先頭固定表示の投稿を表示する

先頭固定表示の投稿を表示する

一番最初の先頭固定表示の投稿を取得します:(参考:少なくともひとつの投稿が「先頭固定表示」に指定されていなければなりません。そうでなければこのループはすべての投稿を取得します。)

$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]) ) {
	// ここに処理を入れる...
}

先頭固定表示の投稿を表示しない

クエリからすべての先頭固定表示の投稿を除外します:

$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
/* 先頭固定表示の投稿をすべて取得 */
$sticky = get_option( 'sticky_posts' );

/* 最新が先頭になるように先頭固定表示の投稿をソート */
rsort( $sticky );

/* 先頭から 5 つの先頭固定表示の投稿を取得 */
$sticky = array_slice( $sticky, 0, 5 );

/* 先頭固定表示の投稿をクエリ */
$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="何々" という文字列を出力します。これはいくつか異なるクラスの値を含みます:post, hentry(hAtom マイクロフォーマットのページ), category-X(X は投稿につけられた各カテゴリーのスラッグ)および tag-X(先ほどと同様、ただしタグ)。また先頭固定表示に指定された投稿には「sticky」を追加します

.sticky { color:red; }

参考:「sticky」クラスはホームページの先頭ページ(is_home()true、かつ is_paged()false)に表示された先頭固定表示の投稿だけに追加されます。

最新英語版: WordPress Codex » Sticky Posts最新版との差分