WordPress有一个专门为此设计的功能。这个attachment_url_to_postid()
允许您从附件的URL中检索附件的ID,然后您可以使用该URL稍后获取帖子的ID。
如果您想通过编写MySQL查询来实现这一点,我建议您在meta_value
而是:
$basename = basename ($image_url);
$sql = "SELECT post_id FROM {$wpdb->postmeta} WHERE meta_value = \'$basename \'";
$id = $wpdb->get_var($sql);
发布帖子后,GUID列将在数据库中硬编码。因此,如果在localhost上发布帖子,示例GUID如下:
http://localhost/wp-content/uploads/my-image.jpg
但您将使用以下内容在线搜索图像的URL:
$wpdb->get_col($wpdb->prepare("SELECT ID FROM $wpdb->posts WHERE guid=\'%s\';", $image_url ));
很明显,这将一无所获。但是您可以使用
LIKE
结合basename:
$img_name = basename ($image_url);
$wpdb->get_col($wpdb->prepare("SELECT ID FROM $wpdb->posts WHERE guid LIKE \'%s\';", $img_name ));
这与第一种方法大致相同。