web-dev-qa-db-ja.com

注目の画像を取得する

私たちはWordpressのmysqlデータベースに基づいてAndroidアプリを構築しています。データからほとんどの情報を取得してアプリに表示することができました。今、私たちが残したのは、投稿特集画像を取得することだけです。

注目の画像にURLを出力させる方法はありますか?

ありがとうございます。

5
Martin Hasan

注目の画像添付ファイルIDは、meta_key _thumbnail_idと共にpost_metaテーブルに格納されます。

その投稿IDを使用して、meta_key _wp_attachment_metadataを持つ投稿メタを見つけます。

その値は、キーthumbfilewidthheightsizes(配列)、およびimage_meta(配列)を持つ直列化された配列です。

file値は、WP installのuploadsディレクトリを基準にしており、元のフルサイズイメージを指しています。あなたはそれからURLを計算することができるはずです。

sizesはキーとして画像サイズを持ち(例えば、「小」、「中」、「大」、「サムネイル」)、値はキーfileheight、およびwidthを持つ配列です。

image_metaは、画像自体のexif/iptc画像メタデータのようなものを含みます。

9
Dougal Campbell

投稿のおすすめ画像は、その投稿に対する通常の古い添付ファイルです。したがって、他の画像添付ファイルと同様に、投稿タイプattachmentについてwp_postsテーブルを照会する必要があります。トリックはあなたがつかむ必要がある添付ファイルIDを最初に得ることです。

これは与えられた記事のメタ情報、具体的には_thumbnail_idメタに含まれています。

そのため、次のようなクエリが必要になります。

  1. 特定の投稿IDに基づいて、_thumbnail_idテーブル内のキーwp_postmetaでマークされた値を取得します。
  2. 手順1で取得したIDに基づいてwp_postsテーブルから添付ファイルを取得します。
  3. ステップ#2で取得した情報に基づいて添付ファイルのパーマリンクを生成します

しかし、本当に、あなたはここで車輪を再発明するために多くの仕事をしています...

4
EAMann

投稿のサムネイルは、キー{$wpdb->prefix}_postmetaと共に_thumbnail_idテーブルに保存されます。

このようなもの:

SELECT * from {$wpdb->prefix}_posts 
WHERE ID in (
   SELECT meta_value FROM {$wpdb->prefix}_postmeta 
   WHERE meta_key = '_thumbnail_id'
   AND post_id = ':ID'
);

IDを投稿IDに置き換えます。

これは画像自体に関連付けられたPostを返します - post_titleは画像のtitle属性に関連付けられたユーザが何でも、そしてguidがフルサイズの画像URLになります。

異なるサイズが必要な場合は、すべての異なるサイズの直列化配列を含む_wp_attachment_metadata postmeta値を調べる必要があります。

WordPressのapiを使う方がはるかに簡単です。

<?php
if(has_post_thumbnail($some_post_id))
{
   $img = wp_get_attachment_img_src(get_post_thumbnail_id($some_post_id), 'the_image_size');
   // returns an array, the first item is the image URL
   echo $img[0];
}
4
chrisguitarguy

投稿データ、注目画像のURL、機能画像の詳細(寸法など)を取得するために使用したものは次のとおりです。

SELECT p.*, ( SELECT guid FROM wp_posts WHERE id = m.meta_value ) AS imgurl,  (SELECT meta_value FROM wp_postmeta pm WHERE meta_key='_wp_attachment_metadata' AND pm.post_id=m.meta_value ) AS imgdetails
FROM wp_posts p
LEFT JOIN  wp_postmeta m ON(p.id = m.post_id AND m.meta_key =  '_thumbnail_id' )
WHERE p.post_type =  'post'
AND p.post_status =  'publish' AND p.id=@postId;
0
Flo

次のクエリを使用して、すべての投稿の注目画像を取得します。

SELECT result.post_parent, result.guid AS featuredImage
FROM wp_posts AS p 
INNER JOIN wp_postmeta AS pm ON p.ID=pm.post_id
INNER JOIN wp_posts as result ON pm.meta_value = result.ID
WHERE pm.meta_key = '_thumbnail_id' AND p.post_type='post' AND 
p.post_status = 'publish'
0
Matias Masso

最良のSQLソリューション

Wp_postからIDを検索

SELECT * FROM wp_posts WHERE post_status='publish'

メタコンテンツを見つけた

SELECT * FROM wp_postmeta WHERE meta_key='_thumbnail_id' AND post_id=MyID

サムネイルIDを使用して、ファイルをもう一度検索してwp_postmetaを探します。

SELECT * FROM wp_postmeta WHERE meta_key='_wp_attached_file' AND post_id=MyID

その一例です。

$query = mysql_query("SELECT  * FROM wp_posts WHERE post_status='publish' ORDER  BY id DESC LIMIT 6") or die(mysql_error());
    $json='{ "Blog" : [ ';
    while($row =mysql_fetch_array($query)){

        $queryMeta=mysql_query("SELECT * FROM wp_postmeta WHERE meta_key='_thumbnail_id' AND post_id=$row[ID]") or die(mysql_error());

        $f=mysql_fetch_array($queryMeta);

        $value=$f[meta_value];

        $queryMeta2=mysql_query("SELECT * FROM wp_postmeta WHERE meta_key='_wp_attached_file' AND post_id=$value") or die(mysql_error());

        $f2=mysql_fetch_array($queryMeta2);

        $value=$f2[meta_value];

        $json.='{"id" : "'.$row[ID].'" ,  "date" : "'.$row[post_date].'", "title" :"'.$row[post_title].'", "link" : "'.$row[guid].'" ,  "image" :"https://dartesanos.com/blog/wp-content/uploads/'.$value.'" },';

    }
    $json=substr($json,0,-1);

    echo $json ."]}";
0
user3803460