WordPressでは各投稿に対してアイキャッチ画像を指定することができます。アイキャッチ画像を指定しておくと、WordPressのテーマによっては記事の一覧や個別記事のトップに画像が表示されるため、ユーザの目を引くことができます。
ですが、アイキャッチ画像の登録を行っていると、つい、登録漏れをしてしまう場合がありますよね。
そこで今回は、アイキャッチ画像が未指定の投稿の一覧を、SQLで抽出する方法を説明します。
テーブルの構造
アイキャッチ画像は、wp_postmetaテーブルにmeta_key='_thumbnail_id'のレコードとして登録されています。post_id列が、wp_posts.idとの紐づけキーです
SELECT meta_id, post_id
FROM wp_postmeta
WHERE meta_key = '_thumbnail_id';
また、公開済み(publish)もしくは予約投稿(future)している記事(post)の一覧は、下記のSQLで抽出できます。
SELECT id, post_date, post_title, post_status, post_modified
FROM wp_posts
WHERE post_type = 'post'
AND post_status in ('publish', 'future')
ORDER BY post_date desc
アイキャッチ画像が未指定の投稿を抽出する
今回調べたいものは、投稿されているが、アイキャッチがない(not exists)データの一覧なので、下記のSQLで抽出が可能です。
SELECT id, post_date, post_title, post_status, post_modified
FROM wp_posts
WHERE post_type = 'post'
AND post_status in ('publish', 'future')
AND not exists (
SELECT *
FROM wp_postmeta
WHERE wp_postmeta.meta_key = '_thumbnail_id'
AND wp_postmeta.post_id = wp_posts.id )
ORDER BY post_date desc
SQLで一覧が抽出できるだけでは、あまり使い道が無いと思われるかもしれませんが、非対話で作業漏れリストが作成できるので、ChatworkやSlackと連携させてアイキャッチの登録漏れが有ったら通知させるなど、自動化を行っておくとミスの防止に役立ちます。
こちらもおススメ