今回は$wpdbを使ってアイキャッチ画像のURLを取得する方法をご紹介いたします。
流れ
アイキャッチ画像の投稿IDを取得する
アイキャッチ画像の投稿IDは wp_postmeta テーブルに “_thumbnail_id” というキーで保存されています。
global $wpdb;
$post_id = 123;
$meta_key = '_thumbnail_id';
//アイキャッチの投稿ID取得
$table = $wpdb->prefix.'postmeta';
$query = "SELECT * FROM {$table} WHERE post_id = %d AND meta_key = %s";
$res = $wpdb->get_row( $wpdb->prepare( $query, $post_id, $meta_key ) );
// meta_key "_thumbnail_id" の meta_value に アイキャッチの投稿IDが保存されています。
$thumbnail_id = $res->meta_value;
アイキャッチ画像のURLを取得する
アイキャッチ画像のURLは通常の投稿と同じ wp_posts テーブルに保存されていますので、先ほど取得したアイキャッチ画像の投稿IDで対象のアイキャッチ画像のレコードを取得します。
global $wpdb;
//アイキャッチのURL取得
$table = $wpdb->prefix.'posts';
$query = "SELECT * FROM {$table} WHERE ID = %d";
$res = $wpdb->get_row( $wpdb->prepare( $query, $thumbnail_id ) );
// guid に 画像URLが保存されています。
$image_url = $res->guid;
アイキャッチ画像のURL取得関数
以下の関数でアイキャッチ画像のURLを取得することが出来ます。
/**
* $wpdbでアイキャッチ画像のURLを取得する
*/
function ag_get_image_url($post_id, $meta_key)
{
global $wpdb;
//アイキャッチの投稿ID取得
$table = $wpdb->prefix.'postmeta';
$query = "SELECT * FROM {$table} WHERE post_id = %d AND meta_key = %s";
$res = $wpdb->get_row( $wpdb->prepare( $query, $post_id, $meta_key ) );
//アイキャッチのURL取得
$table = $wpdb->prefix.'posts';
$query = "SELECT * FROM {$table} WHERE ID = %d";
$res = $wpdb->get_row( $wpdb->prepare( $query, $res->meta_value ) );
return $res->guid;
}
//記事の投稿IDと '_thumbnail_id' をパラメータに指定して実行します。
ag_get_image_url(123, '_thumbnail_id');
動作環境情報
エックスサーバー(x10) PHP 7.3.16 MySQL 5.7 WordPress 5.5.1
コメント