Retrieve featured image

时间:2012-07-06 作者:Martin Hasan

我们正在构建一个基于Wordpress mysql数据库的Android应用程序。我们能够从数据中获取大部分信息,并将其显示在应用程序上。现在我们只剩下检索帖子的特色图片了。

有没有办法让特色图片输出URL?

谢谢

6 个回复
最合适的回答,由SO网友:Dougal Campbell 整理而成

特色图像附件id存储在post\\U meta表中,带有meta\\U键_thumbnail_id.

使用该post id查找带有meta\\u键的post meta_wp_attachment_metadata.

它的值是带有键的序列化数组thumb, file, width, height, sizes (数组),以及image_meta (数组)。

这个file 值相对于WP安装的上载目录,并指向原始的全尺寸图像。您应该能够从中计算URL。

sizes 将图像大小作为其键(例如,“small”、“medium”、“large”、“thumbnail”),该值是一个包含键的数组file, height, 和width.

image_meta 将包含来自图像本身的exif/iptc图像元数据等内容。

SO网友:chrisguitarguy

post缩略图存储在{$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替换为post ID。

这将返回与图像本身关联的帖子post_title 将是用户与图像上的title属性关联的任何内容guid 将是完整大小的图像URL。

如果你想要不同的尺寸,你必须查一下_wp_attachment_metadata Posteta值,该值将包含具有所有不同大小的序列化数组。

使用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];
}

SO网友:EAMann

该帖子的特色图片是该帖子的常规旧附件。因此,与任何其他图像附件一样,您需要查询wp_posts 职位类型表attachment. 诀窍是首先获取需要获取的附件ID。

这包含在给定帖子的元信息中,特别是_thumbnail_id 元。

因此,您需要一个查询:

检索键标记的值_thumbnail_idwp_postmeta 基于给定帖子ID的表。从wp_posts 基于步骤1中检索到的ID的表根据步骤2中检索到的信息生成一个附件永久链接。实际上,您需要做大量的工作来重新设计轮子。。。

SO网友:Adam

以下是我用来检索帖子数据、特色图片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;

SO网友:Matias Masso

使用下一个查询检索所有帖子的特色图片:

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\'

SO网友:user3803460

最好的SQL解决方案,

从wp\\U 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\\U Posteta文件中再次搜索

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 ."]}";

结束

相关推荐

在Visual Studio 2010中使用C#通过数据连接访问WordPress MySQL数据库

所以我在google上搜索了无数的教程,阅读了MySQL、Visual Studio、WordPress和Plesk上的文档。我试着把在这个网站上发帖作为最后的选择,似乎事情已经到了这个地步。简单地说,我想在另一个ASP上显示WordPress博客中的类别列表。NET/C#我拥有的网站。没有专门的类别名称RSS,否则我会使用RSS提要中的XML和XSLT以这种方式显示类别列表。我得出的结论是,我必须直接从我的其他网站访问我的WordPress数据库(分类名称存储在那里)。为此,我在本地计算机(C:Driv