WP_GET_ATTACH_IMAGE_src()对索引有效,但对存档无效

时间:2016-12-14 作者:startToday

我正在自定义一个客户端主题,他让我这样做:当用户单击索引和归档上的帖子缩略图时,大尺寸的帖子缩略图会显示在一个灯箱中。因此,我使用以下方法获得了大尺寸的帖子缩略图:

<?php $page_id = get_queried_object_id(); ?>
<?php $thumbs_array = wp_get_attachment_image_src( get_post_thumbnail_id($page_id), \'large\' ); ?>
<?php $large_thumb = $thumbs_array[0]; ?>
然后把$large_thumb 相应标记上的值为data-*, 例如:

<div class="img lightbox-trigger" data-large-thumb="<?php echo $large_thumb ?>">                
    <?php the_post_thumbnail(\'thumbnail\'); ?>
</div><!-- .img .lightbox-trigger -->
我使用jQuery片段在一个lightbox中展示了这一点。

现在在索引上,所有的东西都工作得很好,很完美。但当我检查归档页面时,它并没有正常工作。我检查生成的源并看到data-large-thumb 上的存档文件为空!,索引上的位置data-large-thumb 包含缩略图的大尺寸地址。

奇怪的是,需要使用get_template_part. 我是说当我检查的时候index.phparchive.php 两者都有

<?php get_template_part( \'col-h\' );?>           
从同一文件加载代码,但该文件返回index 什么都没有archive, 当我var_dump($large_thumb) 它是NULL. 我觉得这很奇怪!

在上生成的结果index.php:

<div class="img lightbox-trigger" data-large-thumb="http://example.com/wp-content/uploads/2016/12/Desert-1024x768.jpg">                 
    <img src="http://example.com/wp-content/uploads/2016/12/Desert-150x150.jpg" class="attachment-thumbnail size-thumbnail wp-post-image" width="150" height="150">
</div>
和上archive.php:

<div class="img lightbox-trigger" data-large-thumb="">              
    <img src="http://example.com/wp-content/uploads/2016/12/Desert-150x150.jpg" class="attachment-thumbnail size-thumbnail wp-post-image" width="150" height="150">
</div>
UpdateI var\\u转储了这3个相关变量,以了解它们返回的结果。索引上:

$page_id returns 0
$thumbs_array return correct array containing url, width, height, etc
$large_thumb returns url of large thumbnail
一切都很顺利index. 但在archive 页码:

$page id returns proper value; 2, 3, 8, 10 or whatever the ID is
$thumbs_array returns `bool(false)`
$large_thumb returns`NULL`
所以问题似乎与wp_get_attachment_image_src 不幸的是,这在存档上不起作用。有没有其他我应该使用的WP功能?为什么返回False?

我错过了什么?

如果需要其他信息来解决这个问题,请告诉我。

谢谢

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

get_queried_object_id 将返回所查询对象的ID(显然)。在存档页面上,这将是存档的ID–除非你的存档有缩略图,否则你不会得到图像。

取决于设置的位置$large_thumb 变量,您应该能够使用the get_the_post_thumbnail_url()-function.

如果将代码放在代码的正上方以显示图像,则应该可以:

<?php
$large_thumb = get_the_post_thumbnail_url(null, \'large\');
// Notice the null-value, instead of providing a post ID or object, will default to the current global $post.
?>
<div class="img lightbox-trigger" data-large-thumb="<?php echo $large_thumb ?>">                
    <?php the_post_thumbnail(\'thumbnail\'); ?>
</div><!-- .img .lightbox-trigger -->

相关推荐

Images with overlay

我有一些图片在一个容器中,我想添加一个覆盖和图标。这不是现成的,但我找到了一些有用的代码:HTML:<div class=\"main\"> <span class=\"featured\"><img src=\"http://joshrodg.com/IMG_001-258x258.jpg\" title=\"\" alt=\"\"></span> </div> CSS:.featured {