0

我正在开发自己的 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) 的最新可用版本

4

1 回答 1

1

是的,WordPress 无法确定您插入帖子中的图像是否实际附加到帖子中 - 它可能是您从外部网站添加的内容,它只是编辑器中的 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 );

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

查看更多:发布缩略图

于 2013-03-14T06:03:28.020 回答