Wordpress 3.5.1上的图像检索问题

时间:2013-02-14 12:11:12

标签: wordpress wordpress-theming

我正在开发自己的wordpress主题。我对帖子图片的检索存在问题。

我正在使用以下代码:

if ($images = get_children(array(
'post_parent' => $postid,
'post_type' => 'attachment',
'numberposts' => '1',
'post_mime_type' => 'image', )))
foreach($images as $image) {
$thumbnail=wp_get_attachment_image_src($image->ID, $size);
?>
<?php echo get_image_path($thumbnail[0]); ?>
}
else ....// retrieve a default error image

如果我上传新图片并将其附加到帖子中,此代码可以正常工作,但如果我附加从媒体库中获取的旧图像,则会失败。

我无法弄清问题在哪里。根据Wordpress的函数参考,get_children()和get_image_path()都不应该被弃用。

我正在使用最新的Wordpress版本(3.5.1)

1 个答案:

答案 0 :(得分:1)

是的,WordPress无法确定您插入帖子的图片是否实际附加到帖子上 - 它可能是您从外部网站添加的内容,只要它知道,它只是HTML中的HTML代码编辑器。

正如我认为你已经确定的那样,get_children只会找到附件 - 即。为此帖子上传的照片,而不仅仅是从媒体库中插入的照片。

实现您要做的事情的唯一方法是明确上传每个帖子的照片 - 这意味着如果多个帖子使用相同的图片,您需要为每个帖子再次上传。不理想,但目前这是将图像“附加”到帖子以便get_children工作的唯一方法。

我建议的另一种方法是使用自定义字段手动存储要用作缩略图的图像的帖子ID(无论它们是否附加)然后迭代这些要为其显示缩略图图像时的ID。它有点笨重,但只允许你上传一次照片。


但是,如果你要做的只是显示帖子缩略图,那么有一种更简单的方法可以做到这一点。您现在可以单独指定要用作“精选图像”的图像(来自库的任何图像,不必附加到帖子或显示在帖子中)。

首先,请确保添加对帖子缩略图的支持:

add_theme_support( 'post-thumbnails' ); 

然后进入您的帖子,点击“添加媒体”,然后从左侧菜单中选择“设置特色图片”。您可以选择库中已有的任何图像或上传新图像,它将在后缩略图中设置。

在你的模板中,你可以在循环中做这样的事情:

if ( has_post_thumbnail() ) {
    the_post_thumbnail();
} 

如果您在循环外工作,则可以获取特定帖子的缩略图ID:

$post_thumbnail_id = get_post_thumbnail_id( $post_id );

...或直接获取缩略图HTML:

get_the_post_thumbnail( $post_id, $size, $attr );

不幸的是,您只能拥有一个精选图片,因此如果您需要更多图片,则需要返回原始代码并明确将图片附加到帖子中。

查看更多:Post Thumbnails