2016
7
13
WordPressのget_postsでアイキャッチがある記事だけのリストをつくる

アイキャッチの設定してある記事だけを、指定数リストに出力する方法をいろいろ試してみました。おまけとして、アイキャッチの「無い」記事だけを取得する方法もあります!


代替画像のない記事リストを出したい

ちょっと前にフッターのレイアウトを変えまして、そこで出している「ピックアップ」という名のランダム記事リンクに、アイキャッチを一緒に表示させることにしました(以前はテキストだけでした)。

160713-1

このブログをWordPressで始めてからは毎回アイキャッチを設定しているので、新着記事などでは問題ないんですが、WPに移行する前の記事もインポートしてあって、ランダムだとそれも出てきちゃうんですよね。

アイキャッチが設定されてない記事にはnoimageのような代替画像を出す、という手法でももちろんいいんでしょうが、なんというか見栄えがなー、びみょうだなー、と思ってしまいまして。

過去記事のすべてがアイキャッチ無しなら、日付を指定してそれ以降の記事だけ、ということもできるけど、全部じゃない…w あったりなかったり…。。

ということで、「アイキャッチが設定してある記事だけ」を取得してリストにする方法をいろいろ試してみました。

サンプルコード

以下はすべて、functions.phpとかではなく、リストを出したい任意の場所(sideber.phpとかfooter.phpとか)に書くコードです。ランダムで5件出力します。

アイキャッチがない場合、代替画像を表示する方法

せっかくなので、最初にやったnoimage画像を出す方法から。

3行目ではランダムで5件を指定しているのだけなので、アイキャッチの有無は関係なく5件取得します。

取得した5件をループさせて、アイキャッチを持っていたら8行目で取得、なかったら10行目で代替画像を取得して、13行目で画像とリンクテキストを出力します。

多めに取得してアイキャッチ有り記事だけカウントして使う方法

やっぱり代替画像は見栄えがな…、と思って書いてみたコード。

3行目で、多めに20件くらいランダム記事を取得しておいて、アイキャッチを持っていた時だけ出力し、出力数をカウントしていって5件を超えたらループを抜ける、というもの。

meta_key指定でアイキャッチ有り記事だけ取得する方法

一応目的の実装はできたけどなー、とか思いながら更に調べていたら!

'meta_key' => '_thumbnail_id'で指定できるんですね…! ありがとうございます!!! 参考にさせていただいて改善したコードがこちら。

スマート!

わざわざ多めに取得しなくても、アイキャッチ有り記事だけきっちり5件取得してくれます! 最初からこうすればよかった…!!

おまけ:アイキャッチ無し記事だけ取得する方法

上記の方法でアイキャッチ「有り」は簡単に取得できるんですが、「無し」について一発で持ってこれる引数はない模様…。参考の記事もそちらの方法を模索しておられたようです。さきほどの「多めに取得してカウント」という方法が使えそうな気がしたので、わたしも書いてみました。

3行目で、多めにランダム記事を取得しておいて、アイキャッチを持たない時だけ出力していく、というもの。

ちなみに、総記事数に対してアイキャッチ無し記事の割合が少ないと、20件取得してもその中に5件も出てこないかもしれません。そんなときは3行目の'numberposts'の数をもっと増やすか、-1とすると、全件取得してくれます。

以上です! どなたかのお役に立てたら幸いです!

  • このエントリーをはてなブックマークに追加
  • follow us in feedly 618
  • RSSを登録

公開日:2016/07/13


コメントを残す




*印は必須項目です。コメントは承認制ですので、反映までしばらくお待ち下さい。(稀にですがスパムの誤判定にて届かないこともあるようですので、必要な際はお問い合わせからお願い致します。)


back to top