お問い合わせはコチラから

メディアファイルをwp_queryする時のメモ

サイト運営

WordPressのメディアファイルは、記事とは別にpost_idが割り振られています。

メディアファイルのpost_idを調べたいと思った時に知識不足でハマったことがあったのでメモしておきたいと思います。

メディアファイルのpost_typeは?

メディアファイルはpost_idがありますが、投稿タイプ(post_type)はpostではありません。

post_typeの指定が必要なクエリでは、メディアファイルのpost_typeを正しく指定する必要があります。

メディアファイルの投稿タイプは、attachmentです。

  • Post (Post Type: ‘post’)
  • Page (Post Type: ‘page’)
  • Attachment (Post Type: ‘attachment’)
  • Revision (Post Type: ‘revision’)
  • Navigation menu (Post Type: ‘nav_menu_item’)
  • Block templates (Post Type: ‘wp_template’)
  • Template parts (Post Type: ‘wp_template_part’)
Post Types – Theme Handbook | Developer.WordPress.org
There are many different types of content in WordPress. These content types are normally described as Post Types, which ...

メディアファイルはpost_typeだけ指定してもクエリ結果が返ってこない

添付ファイルのデフォルトの投稿ステータスが inherit であることに注意する。

post_statusを意図的に指定しないと結果が返ってきません。

$args = array(
	'post_type'	 => 'attachment',
	'post_status'	 => 'inherit',
	'post_mime_type' => 'image/gif',
);
【WordPress】必ず使うサブループ「WP_Query」のパラメータ一覧
ワードプレスでウェブサイトを構築するとき、ほぼ必ずサブループを使います。サブループはワードプレスの基礎と言っても過言ではないでしょう。しかしサブループを実装するための「WP_Query」は用意されているパラメーターが膨大...

アイキャッチ画像が記事に登録される仕組み

アイキャッチ画像は、各記事(post、page、カスタム投稿)のpost_metaの_thumbnail_idフィールドにメディアファイルのpost_idが保存されることで、関連付けされています。

2つの要件を満たせば、記事にアイキャッチ画像を指定できます。

  • アイキャッチに指定する画像は、メディアファイルのpost_idがある
  • メディアファイルのpost_idが、アイキャッチを指定する記事のpost_metaの_thumbnail_idフィールドに登録されている

アイキャッチ画像が無い記事をクエリしたい

記事の数が増えてくると、アイキャッチ画像が設定されていない記事を探すのは結構大変です。

wp_queryでアイキャッチ画像が設定されていない記事を抽出できれば、アイキャッチ画像を自動的に設定するということも可能です。

自分で頑張らなくても、xo-featured-image-toolsを使えば、アイキャッチ画像を一括して自動的に設定できます。

$args = array(
        'post_type' => 'post',
      	'posts_per_page' => '-1',
				'post_status'=>'publish',
        'meta_query' => array(
                array(
                        'key' => '_thumbnail_id',
                        'compare' => 'NOT EXISTS'
                )
        )
);

アイキャッチ画像の関連付けを一括で削除したい

アイキャッチ画像を削除したい場合は、関連付けを解除するだけでよいので、post_metaの_thumbnail_idフィールドを削除すればよいです。

DBクエリで削除するのが簡単ですので、wp cliを使います。

接頭辞が”wp_”ではないケースでは、wp_config.phpに書かれている接頭辞に修正が必要です。

wp db query 'DELETE FROM wp_postmeta WHERE meta_key="_thumbnail_id"' --quiet

あくまでも関連付けを削除するだけなので、メディアファイルの画像が削除されることも、メディアファイルのpost_idが消えることもありません。

アイキャッチ画像を自動で設定したい

記事のアイキャッチ画像を自動で設定したい場合は、プラグインが便利です。

この手のプラグインは、save_postフックを使い、the_contentを見て画像を抽出してアイキャッチ画像を自動で設定してくれます。

外部画像非対応

Auto Featured Image (Auto Post Thumbnail)
Automatically generate the Featured Image from the first image in post or any custom post type only if Featured Image is...

外部画像にも対応

XO Featured Image Tools プラグイン
投稿やカスタム投稿の記事内の画像より、アイキャッチ画像を自動生成するプラグインです。外部画像(添付ファイル以外の画像...
Featured Image from URL (FIFU)
Use an external image/video/audio as featured image of a post or WooCommerce product.
この記事を書いた人
ブーン

はるばる日本よりオランダ王国へやってまいりました。
自分の経験が少しでも参考になれば嬉しいです。
お問い合わせは、『こちら』からお願い致します。

\ブーンをフォロー/
スポンサーリンク
サイト運営
\シェアお願いします!/
\ブーンをフォロー/
こんな記事も読まれています

失敗しないレンタルサーバーランキング

mixhost

不正アクセスに強くて使いやすいおススメサーバー
\本サイトで利用中/
メリット①:自動ウィルス駆除対応
メリット②:サイトの表示速度が速い!
メリット③:転送量の上限が多い!
メリット④:自由にプラン変更ができ、アクセス増にも対応できる!
メリット⑤:バックアップデータが無料で復元できる!
メリット⑥:Wordpressが簡単にインストールできる!
メリット⑦:どのプランでも初期費用が無料!
メリット⑧:10日間の無料お試し期間と30日の返金保証!

Conoha Wing

国内Wordpress最速の最強サーバー
メリット①:圧倒的な表示速度
メリット②:レンタルサーバーと独自ドメインがセットでお得◎
メリット③:プラン変更はすべてのプランで自由自在
メリット④:一か月の利用転送量の制限が緩い(9TB~)
メリット⑤:WordPresサイトの移行が簡単

エックスサーバー

国内シェアNo1の安定性と実績が魅力。ALL SSDで死角なしの万能サーバー。
メリット①:サイトの表示速度が安定して速い!
メリット②:アクセス負荷に強くて安定性が高い!
メリット③:24時間365日の充実サポートで安心!電話サポートもあり!
メリット④:転送量が多い!
メリット⑤:自動バックアップ機能付き!
メリット⑥:WordPressが簡単にインストールできる!
メリット⑦:10日の無料お試し期間がある!

タイトルとURLをコピーしました