固定された投稿
TOPICS
翻訳元記事はこちらです。
固定された投稿とは、投稿のフロントページのトップに投稿が配置されることです。この機能は既存の投稿タイプのみで利用でき、カスタム投稿タイプでは利用できません。
投稿の固定方法
- 管理画面 > 投稿 > 新規追加 または 編集へ移動します
- 画面右側の「ブログのトップに固定」にチェックを入れます
固定された投稿の表示
固定された投稿を表示
最初に固定された投稿だけを表示します。少なくとも1つの投稿が「ブログのトップに固定」として指定されていなければ、ループはすべての投稿を表示します。
$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 ) );
?>
固定された投稿のスタイル
テーマ作者がよりシンプルなスタイリングを行えるようにするために、DIVにclass=”… “を追加するためにpost_class()
関数を使用しています。
<div id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
post_class()
は、その div の class="whatever"
の部分を出力します。これにはいくつかの異なるクラスの値が含まれます: post, hentry (hAtom microformatページ用)、category-X (Xは投稿が属するすべてのカテゴリのスラッグです)、そしてtag-X (似ていますが、タグが付いています)。また、固定された投稿に “sticky “が追加されます。
.sticky { color:red; }
ホーム画面の1ページ目にある固定された投稿に対してのみ「sticky」クラスが追加されます(is_home()
がtrue、is_paged()
がfalse)