显示带有标题和图片附件缩略图

时间:2017-06-11 06:15:49

标签: php wordpress image html-lists attachment

我无法通过标题&获取图片附件。在列表中的Wordpress页面上摘录。我正在使用新的WP_Query来生成列表,其中包含来自特定类别的3个帖子。在循环内部,我试图获取每个帖子的第一张图片,并使用' get_children'来检索他们的图片ID。数组(帖子没有精选图片,所以我不能使用the_post_thumbnail)。使用console.log,我可以看到我至少获取列表中第一个项目的图像URL,但不能获取其他项目的URL。即使是我得到的那个,我也无法使用wp_get_attachment_thumb_file()显示它。这是我到目前为止的代码:

<div class="inner-left">
<ul class="blog-posts-ul">
<?php
global $wp_query;
$wp_query = new WP_Query(array('order' => 'DESC', 'posts_per_page' => 3, 'cat' => '21,23,689,741,1589'));
    if (have_posts()) : while (have_posts()) : the_post(); ?>
    <li>
        <?php $attachment = get_children( array('post_parent' => get_the_ID(), 'post_type' => 'attachment', 'post_mime_type' => 'image' ) );
            if ( $attachment ) {
                $attachment = current( $attachment );
                $image_url = wp_get_attachment_thumb_url( $attachment->ID );
                $attachment_id = attachment_url_to_postid( $image_url );
                echo '<script>console.log("thumb: "' . $image_url . ')</script>';
            }; ?>
        <a href="<?php the_permalink(); ?>"><?php the_title(); ?></a><?php the_excerpt(); ?>
        <?php wp_get_attachment_thumb_file( $attachment->ID ); ?>
    </li>
    <?php endwhile; endif; ?>          
</ul>
<?php // Reset Query
wp_reset_query(); ?>
</div><!-- inner-left -->

如果您想查看,测试网站位于http://testsite.humortimes.com/。向下滚动,它被格式化为3个方格,位于“最新幽默时代”新闻头条新闻之下。部分。现在,它的格式不是很好,我打算有两个专栏,只有一个专栏。

任何帮助将不胜感激。谢谢。

3 个答案:

答案 0 :(得分:0)

停止使用控制台日志并开始使用var_dump($ image_url);这将打印您在该元素上直接打印的任何内容。

我不明白为什么你不能使用缩略图?

答案 1 :(得分:0)

最后发现了一些会返回图像附件缩略图的内容(一个不是特色图片,因此使用the_post_thumbnail不可用):

wp_get_attachment_image( $attachment_id, 'thumbnail' )

我可以发誓我以前尝过那个,但无论如何,它现在正在工作,哈利路亚。

但是,我留下了每个列表项<li>使用相同图像的问题。 (循环围绕列表并位于周围的<ul>内)。

然后我在Function Reference/get children找到了一些关于重新键入数组的好信息,这似乎使得它至少尝试更新每个列表项的缩略图。但是,我没有得到第一个以外的图像。那么,为什么不更新?

完整代码现在:

<div class="inner-left">
<ul class="blog-posts-ul">
<?php
global $ht_query;
$ht_query = new WP_Query(array('order' => 'DESC', 'posts_per_page' => 3, 'cat' => '21,23,689,741,1589')); 
if (have_posts()) : while ( $ht_query->have_posts() ) : $ht_query->the_post(); 
if ( has_post_thumbnail() ) {
    $image_attach = the_post_thumbnail(); 
    } else {
    $args = array('post_parent' => $post->ID, 'post_type' => 'attachment', 'post_mime_type' => 'image', 'numberposts' => 1, 'order'=> 'DESC' );
    $attachments = get_children($args,ARRAY_A);
    $rekeyed_array = array_values($attachments);
    $child_image = $rekeyed_array[0]; 
    $image_attach = wp_get_attachment_image( $child_image['ID'], 'thumbnail' ); 
    };
?>
    <li>
    <a href="<?php the_permalink(); ?>"><?php echo $image_attach; ?><?php $title = the_title('','',false); if(strlen($title) > 50): echo trim(substr($title, 0, 55)).'...'; else: echo $title; endif; ?></a><?php the_excerpt(); var_dump ($child_image['ID']); ?>
    </li>
<?php endwhile; endif; ?>          
</ul>
<?php // Reset Query
wp_reset_query(); ?>
</div>

最后的var_dump表明attachment_id每次都没有更新,因为它为第一个后面的每个连续项提供了“NULL”。

非常感谢任何帮助。

答案 2 :(得分:0)

经过很多挫折之后,我发现这个nifty function正是我想要的。它查询数据库以找到帖子的第一张图片,我猜这是我错过的关键。它还首先测试特色图像,因此也需要处理。我把这个函数放在我的子函数文件中,只需在页面上需要时调用它。

如果您使用它,请注意您需要添加$size = 'thumbnail';,因为虽然她的描述说它会返回缩略图,但它会返回完整尺寸的图像。但是,在整个函数中使用此变量,因此您只需要为其赋值。

谢谢,Amberweinberg!