我想在wordpress数据库上有一个mysql查询,恢复标题和最后6个帖子的第一个图像链接。
不允许使用Wordpress核心功能,因为我想在外部网站上显示它们。换句话说,我需要纯mysql查询。
我能够以这种方式显示标题:
$result = mysql_query("select * FROM wp_posts WHERE post_status='publish' AND post_type='ad_listing' ORDER BY id desc limit 6" ,$db);
while ($records = mysql_fetch_assoc($result)) {
echo '<li>'.$records['post_title'] ."</li>";
}
但如何恢复附在这些帖子上的第一张图片(如果存在)?
答案 0 :(得分:1)
对于wp_posts表中的图像记录,post_parent指向发布的页面吗?我没有,如果你没有,那么你需要搜索每个已发布页面的post_content字段,寻找img标签(或者你用于图像的任何标签)。
从我读过的其他文章来看,有时候图片的post_parent指向父页面。如果您的数据库属实,那么您应该可以执行以下操作:
SELECT
post.id AS post_id,
post.post_title,
post.guid AS post_url,
image_detail.id AS image_id,
image_detail.post_title AS image_title,
image_detail.guid AS image_url
FROM wp_posts AS post
LEFT JOIN (
SELECT post_parent, MIN( id ) AS first_image_id
FROM wp_posts
WHERE post_type = 'attachment'
AND post_mime_type LIKE 'image/%'
GROUP BY post_parent
) AS image_latest
ON post.id = image_latest.post_parent
LEFT JOIN wp_posts AS image_detail
ON image_detail.id = image_latest.first_image_id
WHERE post.post_status = 'publish';