如何在单个查询中获得帖子标题,描述和图像

时间:2017-10-31 12:56:18

标签: php mysql database wordpress

我需要从wp_posts和wp_postmeta表中获取标题,描述(内容)和图像。

我可以使用以下查询获取图片,但无法获取标题和内容。

SELECT childpost.* 
FROM wp_jtgw_posts childpost 
INNER JOIN wp_jtgw_postmeta parentmeta ON (childpost.ID=parentmeta.meta_value)
WHERE parentmeta.meta_key='_thumbnail_id' 
AND parentmeta.post_id=xxxx;

有人能告诉我如何获取标题和内容以及图像?

2 个答案:

答案 0 :(得分:1)

我相信你想要这样的东西(从Wordpress schema documentation判断)

SELECT
    post.id,
    post.post_content,
    post.post_title,
    thumbnail_url.meta_value as thumbnails_url
FROM
    wp_jtgw_posts as post
    LEFT OUTER JOIN wp_jtgw_postmeta as thumbnail ON
        post.ID = thumbnail.post_id AND
        thumbnail.meta_key = '_thumbnail_id'
    LEFT OUTER JOIN wb_jtgw_postmeta as thumbnail_url ON
        thumbnail.meta_value = thumbnail_url.post_id AND
        thumbnail_url.meta_key = '_wp_attached_file'
WHERE
    post.ID=xxxx;

我已经更新了答案,回到_postmeta表,第二个LEFT OUTER JOIN拉取thumbnail_url(meta key = '_wb_attached_file')以获取与thumbnail_id相关的post_id第一个LEFT OUTER JOIN到_postmeta表。

答案 1 :(得分:0)

您应该弄清楚如何使用WordPress的api进行此查询。例如,此查询中的表名从WordPress安装到安装不等。

但与此同时,您需要为此查询使用键/值模式。

SELECT childpost.title, childpost.description, img.meta_value AS img
  FROM wp_posts
  LEFT JOIN wp_postmeta img ON wp_posts.ID = img.post_id AND img.meta_key='_thumbnail_id'

技巧是将所需的键定义为ON子句的一部分,而不是在WHERE子句中定义它。即使您想要的元值丢失,使用LEFT JOIN也可以获得帖子。