固定された投稿

2020.04.03 2020.04.03

TOPICS

翻訳元記事はこちらです。

固定された投稿とは、投稿のフロントページのトップに投稿が配置されることです。この機能は既存の投稿タイプのみで利用でき、カスタム投稿タイプでは利用できません。

投稿の固定方法

  1. 管理画面 > 投稿 > 新規追加 または 編集へ移動します
  2. 画面右側の「ブログのトップに固定」にチェックを入れます

固定された投稿の表示

固定された投稿を表示

最初に固定された投稿だけを表示します。少なくとも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)