WordPress $wpdbでアイキャッチ画像のURLを取得する

今回は$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

関連記事

コメント

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