我想查询wordpress数据库,以便获取所有想要的帖子以及他们的图片。我设法用2个不同的查询来做到这一点。第一个,将所有帖子与所需字段和第二个一起,在foreach循环中运行,以获取每个帖子的图像。我的问题是这需要很长时间,我想避免id。我需要一个解决方案,以避免第二个查询中的foreach
循环并将其合并到第一个查询中。
查询1
"SELECT * FROM wp_posts";
并且foreach返回了posts.ID
查询2
"SELECT wp_posts.guid IN (Select wp_postmeta.meta_value from wp_postmeta where wp_postmeta.meta_key = '_thumbnail_id' AND wp_postmeta.post_id = ('the returned post id foreach of ID output of the first query')"
答案 0 :(得分:1)
使用规范化方法,它将通过避免两个查询来解决您的问题:
SELECT WP.guid
FROM wp_posts WP,
wp_postmeta WPM
WHERE wp_postmeta.meta_key = '_thumbnail_id'
AND WPM.post_id=WP.yourForeignField
GROUP BY WP.guid
答案 1 :(得分:0)
我知道在posgresql中,JOIN会这样做。我对单词印刷不太了解,但我会调查并更新此答案
更新应该这样做:
SELECT guid FROM wp_posts
OUTER JOIN wp_postmeta on wp_postmeta.post_id = wp_posts.id
where wp_postmeta.meta_key = '_thumbnail_id';
JOIN将特定键上的两个表组合在一起。
答案 2 :(得分:0)
你可以像这样使用wordpress默认函数get_posts()
。
$args = array('posts_per_page'=> -1,'meta_key'=> '_thumbnail_id' );
get_posts( $args );