is_sticky() – 先頭固定表示の投稿かどうかを調べる関数

投稿日 :

カテゴリー :

WordPress の各投稿への設定で、投稿を最上部(先頭)に固定しておく機能があります。その機能が有効になっているかを判断する関数が is_sticky() です。

ブロックエディターでの先頭固定表示設定箇所
投稿クイック編集での先頭固定表示設定箇所
目次

is_sticky() 関数とは

トップに固定(または先頭に固定表示)を各投稿で有効にすると、その投稿がループの一番上に表示されます。また、パラメーターでポストIDを指定することもできます。

パラメーター

$post_idデフォルトではグローバルの $post が入る

使い方

一般的にはループの中で単純な条件分岐として利用することが多いでしょう。先頭固定表示設定になっている投稿のみ特別な処理を施したい場合には、以下のように記述します。

if ( is_sticky() ) {
	echo "先頭固定だよ";
}

引数に何も指定しない場合、グローバルの $post に設定されている投稿 ID が入ります。ですので、ループの中で各投稿を表示する処理の際に、上記の記述で表示する投稿すべてに処理を施すことができます。

また、引数に投稿 ID を指定することもできるので、任意の投稿IDを持つ投稿のみに処理を施したい場合には、以下のように記述します。

if ( is_sticky( '1' ) ) {
	// 投稿 ID が 1 の投稿にのみ実施する処理を記述する
}

フック

is_sticky

apply_filters( ‘is_sticky’, bool $is_sticky, int $post_id )

第一引数には $is_sticky で先頭固定表示設定されているかどうか、第二引数には $post_id でその投稿 ID を確認できます。

このようなコードで動作を確認することができます。

add_filter(
	'is_sticky',
	function ( $is_sticky, $post_id) {
		echo '<hr>' . basename(__FILE__) . ' :: ' . __LINE__;
		echo( '<pre>' );
		var_dump( $is_sticky, $post_id );
		echo( '</pre>' );
		echo '<hr>';
	},
	10,
	2
);

まとめ

先頭固定表示の機能って、あまり一般的ではないのかな?と感じる時もあるのですが、やはりユーザーが利用できる状態になっているのであれば(=意図的に先頭固定表示機能を利用できないようにしない限り)、クラシックテーマ開発の中で対応しておきたいところですよね。

先頭に固定表示したいということは、やはりみんなに見てほしいという気持ちのある投稿だと思うので、ちょっと見た目を変えたりアクセントをつけたりなど施してみると楽しいかもしれませんね。

コーディングや
WordPress開発のリソースが足りない!

オレインデザインでは、デザインデータからの HTML コーディングから WordPress テーマ・プラグイン開発まで幅広くウェブ制作に対応しています。

お気軽にお問い合わせください。

WordPress 6.5.x 対応版を出版しました

WordPress デフォルトテーマ Twenty Twenty-Four を使って、シンプルなブログやポートフォリオサイト、そしてコーポレートサイトを作りながら、ブロックテーマやサイトエディターの基本を理解することができます。