Allied ArchitectsAllied ArchitectsEngineer Blog

WordPressでアイキャッチ画像(Post Thumbnail)がない投稿のみを取得する方法

2013/12/3 Wordpress

どーも、aoyamaです。社内にもうひとり「青山さん」がいらっしゃって、
メールでのやり取りでの導入部分が

青山さん
お疲れ様です、青山です。

とかなって、メールが続くとよくわからなくなったりします。

あと、社内でも宛先の間違いメールが、たまに届くようになりました。
大きな会社で、「佐藤」とか「鈴木」とかメジャーな苗字の人ってもっと大変なんだろうなと
思う今日、この頃です。
面倒ですね。

前回は、Knockout.jsで動くサンプルに関する記事を書いてみたりしました。
が、今回は、Wordpressネタにしようと思います。

「Wordpressでアイキャッチ画像(Post Thumbnail)がない投稿のみを取得する方法」
についてです。
結構簡単かなと調べてみたのですが、ざっと調べた限りでは見つからず、
結構苦労したので、共有です。
ニッチ過ぎて需要がないような気もしますが…。

WordPressでアイキャッチ画像(Post Thumbnail)が「ある」投稿のみを取得する方法

アイキャッチ画像(Post Thumbnail)が「ない」投稿の取得の話よりも、
まずは、「ある」投稿の取得方法から見ていきましょう。

または、

これだけです。簡単ですね。
では、いよいよ本題です。

引数だけでなんとか出来ないか、試してみる

WordPress Codexの「query_posts」のページを眺めてみましょう。
「カスタムフィールド引数」の項目に指定できるキーが書いてあります。

  • meta_key: (string) – Custom field key.
  • meta_value: (string) – Custom field value.
  • meta_compare: (string) – ‘meta_value=’ で指定された値を比較する演算子。デフォルトは ‘=’ で, ‘!=’、’>’、’>=’、’<'、'<=' も使える。

これらを使ってなんとか、出来ないかなーと眺めてみたものの。
そもそも、アイキャッチ画像がない時に「_thumbnail_id」というカスタムフィールドがあるのか?
と思ったので、DBを見てみることに。

結果、meta_keyはアイキャッチ画像を削除すると消えるようです。

発行されるSQLを無理やり書き換える方向で考える

で、SQLを無理やり書き換える方向で検討してみます。
すべての条件で、SQLを書き換えるわけにはいかないので、下記の場合に書き換えるようにします。

上記の条件で発行されるSQLは下記の通り。

記事用のテーブル(wp_post)の記事に対して、カスタムフィールドは複数存在するので
サブクエリを使わないと、wp_postmetaにmeta_key: _thumbnail_idを持たない記事を
抽出するのは難しそうです。
発行されるSQLを下記のように書き換えるようにします。

で、無理やり書き換えるために、functions.phpに下記の内容に追加します。

といった感じで、かなり力技ですが、
Wordpressでアイキャッチ画像(Post Thumbnail)がない投稿のみを取得する
ことが出来るようになりました。

おわりに

弊社では、一緒に働いていただけるエンジニアを募集中です。
興味のあるかたは、「エンジニア採用サイト」をご覧いただき、ご応募ください。

ご応募お待ちしております。

aoyama
  • aoyama
  • Webエンジニア
  • 受託案件を担当しています。 Javascript, Wordpressなどテーマはその時々で変わりますが、役に立つ情報を提供できればと思います。

RELATION ENTRY

WordPressでカスタムフィールドを使うならWPAlchemyがおすすめ(Advent Calendar 22日目)

WordPressでカスタムフィールドを...

2014/12/22 Wordpress

アライドアーキテクツAdvent Calendar22日目の記事になります。 ごあいさつ どーも、aoyamaです。 前回は「長所から考えるCMS(MovableType、WordPress)の使いどころ」について書きました。 新しく他のCMSを触って、それについて書こうと思っていたら、あっ...

続きを読む

長所から考えるCMS(MovableType、WordPress)の使いどころ(Advent Calendar 13日目)

長所から考えるCMS(MovableTy...

2014/12/13 CMS

アライドアーキテクツAdvent Calendar13日目の記事になります。 ごあいさつ どーも、aoyamaです。 前回このブログに記事を書いたのが、8月20日なので、大分久しぶりです。 季節も変わって、最近は、毎日寒いですね。 ここ1、2年ぐらい、コーポレートサイトやテーマサイトブログ...

続きを読む

aoyamaの記事一覧へ

ページTOPへ