MARKLEAPS[マークリープス]

TECH BLOG

マークリープス技術ブログ

open

【WordPress】「先頭に固定表示」が効かないときに試してみたこと

「先頭に固定表示」にチェックを入れてた記事。

でも、先頭に表示されない。。。

ループの条件指定を見直すことで解決しました!

「先頭に固定表示」が効かない??

記事設定で「先頭に固定表示」にチェックをします。

すると公開日に影響されず、記事一覧の先頭に固定表示が出来ます。

上記の設定をしましたが。。。

構築したWPサイトで「先頭に固定表示」にチェックを入れているのに効かない!

「先頭に固定表示」が効かなかった条件

・オリジナルテーマを使用(試しに、デフォルトのテーマに切り替えたところ、「先頭に固定表示」が正常に機能しました。)
・home.php内で、query_postsを使い、特定のカテゴリースラッグの投稿記事一覧を表示

ループの記述を見直してみる

以下が当初の記述。

query_postsで、特定のカテゴリースラッグの記事を表示する条件指定をしていたところ、
「先頭固定表示」が機能しませんでした。
<?php query_posts(‘category_name=news’);?>
<?php if(have_posts()): while(have_posts()): the_post(); ?>

試しに、query_postsでの条件指定を外し、基本ループのみにしてみると
「先頭に固定表示」が機能しました。
<?php if(have_posts()): while(have_posts()): the_post(); ?>

query_postsでの条件指定に問題がありそう
という事で以下のパターンを試してみました。

×特定のカテゴリースラッグの記事を表示
<?php query_posts(‘category_name=news‘);?>
<?php if(have_posts()): while(have_posts()): the_post(); ?>

→「先頭に固定表示」が機能しない

×特定のカテゴリースラッグの記事を除外
<?php query_posts(‘category_name=-event‘);?>
<?php if(have_posts()): while(have_posts()): the_post(); ?>

→「先頭に固定表示」が機能しない

×特定のカテゴリーidの記事を表示
<?php query_posts(‘cat=1‘);?>
<?php if(have_posts()): while(have_posts()): the_post(); ?>

→「先頭に固定表示」が機能しない

特定のカテゴリーidの記事を除外して表示
例:カテゴリーid1の記事一覧で記事を先頭固定表示したい場合
<?php query_posts(‘cat=-2,-3‘);?>
<?php if(have_posts()): while(have_posts()): the_post(); ?>

→「先頭に固定表示」が機能した!

 

上記の結果から、query_postでの条件ループで、
特定のカテゴリーの投稿一覧で記事を固定させるには
特定のカテゴリーidの記事を除外する事で実現可能という事が分かりました。

【補足】
今回の検証は、かなり前に構築したサイトだった為、query_postをベースにしての検証となっていますが、現在query_postの使用は非推奨となっています。
極力、WP_Queryやget_postsでの条件ループの使用が望ましいです。

 

<番外編>「先頭に固定表示」を無効にするには?

「先頭に固定表示」にチェックが入ってても、公開日順に並べたい
そんな時はパラメーター「ignore_sticky_posts」を使います。

ignore_sticky_posts=0

初期値。「先頭に固定表示」を無視しない(先頭に固定する)
(設定値「false」では正常に機能しませんので数字で指定しましょう。)

ignore_sticky_posts=1
「先頭に固定表示」を無視する(投稿リストにそれらの投稿が本来並ぶべき位置に出す)
(設定値「true」では正常に機能しませんので数字で指定しましょう。)

よく読まれている関連記事

関連最新記事