在循环外获取wp_get_attachment_url

时间:2013-11-03 作者:Alexnl

我需要在循环外获取特征图像。这是为了让我可以为每个页面设置不同的全屏背景图像,由特色图像设置。

在做了一些研究之后,我能够在循环之外获得post ID。

这就是我得到的:

$page_object = get_queried_object();
$page_id     = get_queried_object_id();
$bkgdImg = wp_get_attachment_url( $page_id );
if (!empty($bkgdImg)) {
    $backgroundImg = $bkgdImg;
}
else {
    $defaultbackground = . get_template_directory_uri() . "/images/default-background.jpg";
    $backgroundImg = $defaultBackground;
}

echo $backgroundImg;
谢谢!

5 个回复
最合适的回答,由SO网友:windyjonas 整理而成

如果您要查找的结果是URL的打印输出,如您的示例所示,那么这应该可以:

$page_id = get_queried_object_id();
if ( has_post_thumbnail( $page_id ) ) :
    $image_array = wp_get_attachment_image_src( get_post_thumbnail_id( $page_id ), \'optional-size\' );
    $image = $image_array[0];
else :
    $image = get_template_directory_uri() . \'/images/default-background.jpg\';
endif;
echo $image;

SO网友:s_ha_dum

您有几个语法错误,但在您的问题中,您声明。。。

这是为了让我可以为每个页面设置不同的全屏背景图像,由特色图像设置。

wp_get_attachment_url 获取实际的附件ID,而不是特征图像所附加到的页面ID。因此,我假设问题是“为什么我没有得到我期望的图像URL?”

你需要的是使用get_post_thumbnail_id 并将其传递给wp_get_attacment_url...

$bkgdImg = wp_get_attachment_url(get_post_thumbnail_id( $page_id ));
。。。可能有second argument to specify size.

我希望我猜对了:)

SO网友:Alexnl

这让它工作起来,并为我提供了图像URL:

$page_id = get_queried_object_id();
$post_thumbnail_id = get_post_thumbnail_id( $page_id );
$bkgdImg = wp_get_attachment_url( $post_thumbnail_id );
echo $bkgdImg;
谢谢你的帮助,这让我走上了正确的方向。

SO网友:Nurealam Sabbir

添加缩略图的主题支持add_theme_support(\'post-thumbnails\');

然后在存档页面上编写以下代码。它在WordPress循环之前工作

$thumb_id = get_post_thumbnail_id();
$thumb_url_array = wp_get_attachment_image_src($thumb_id, \'thumbnail-size\', true);
$thumb_url = $thumb_url_array[0];
echo $thumb_url;

SO网友:Isaac

虽然有点晚了,但我创建了一个更干净、可重用的解决方案,并提供了本文中的一些建议。将此添加到函数中的任意位置。php文件,然后只要在需要的地方调用该函数即可。如果您有post id,可以提供它,如果没有,则不需要它。

function iprice_get_attachment_url($post_id = null) {
    $post = $post_id ? get_post( $post_id ) : get_post( get_the_ID() );
    $thumbnail_id = get_post_thumbnail_id($post);
    $thumbnail_url = wp_get_attachment_url($thumbnail_id);
    return apply_filters( \'wp_get_attachment_url\', $thumbnail_url, $post );
}

结束