如何将第一个帖子缩略图显示为小工具的背景图像?

时间:2016-11-17 作者:Alexandru Andrei Costache

我有一个常规的WordPress小部件,可以使用WP_Query 我正试图找到一种方法,将第一篇文章的缩略图显示为整个widget div的背景图像。下面是我需要的视觉表示:

visual representation

我现在使用的代码为每篇文章显示缩略图:

<div class="widget-wrap-sidebar">
<div class="my-widget">

<?php
// THE QUERY
?>

<?php
global $wp_query;
$metakey = \'post_views_count\';
$recent_posts = new WP_Query( array( \'cat\' => $categories, \'orderby\' => $orderby, \'meta_key\' => $metakey, \'posts_per_page\' => $posts ) );
$temp_query = $wp_query;
$wp_query = null;
$wp_query = $recent_posts;
?>

<?php while( $recent_posts->have_posts() ): $recent_posts->the_post(); ?>

<div class="big-image">
<?php if ( \'\' != get_the_post_thumbnail() ) : ?>
<?php $thumbnail_url = get_the_post_thumbnail( get_the_ID(), \'big-image\' ); ?>
<?php  echo wp_kses_post( $thumbnail_url ); ?>
<?php endif;?>
</div>


<div class="the-title">
<h3>
<a href="<?php echo get_permalink(); ?>" title="<?php echo get_the_title(); ?>">
<?php echo get_the_title(); ?>
</a>
</h3>
</div>

<?php endwhile; ?>
<?php wp_reset_query(); ?>

</div><?php // end of my-widget ?>
</div><?php // end of widget-wrap-sidebar ?>
基本上,我需要一种方法来调用第一个缩略图URLwidget-wrap-sidebar 分区类似于:

<div class="widget-wrap-sidebar" style="background-image:url(\'<?php echo $thumbnail_url ?>\')">
然而,我无法使上述代码正常工作
*请不要考虑我可以轻松完成的CSS部分。

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

注意事项:

只需使用the_title(); 而不是echo get_the_title();使用the_title_attribute() 用于标题属性$wp_query 使用辅助查询时wp_reset_postdata() 在二次查询循环之后使用the_permalink() 这逃脱了永久的束缚,而不是未被超越的echo get_permalink();has_post_thumbnail() 检查是否设置了帖子缩略图get_the_post_thumbnail() 返回后期缩略图图像标记,而不是urlthe_post_thumbnail_url() 获取缩略图urlif( 0 === $recent_posts->current_post ){ 在这个循环中

    示例:

    这里有一个示例(PHP 5.4+):

    $recent_posts = new WP_Query( $args );
    if( $recent_posts )
    {
        $thumbnail_url = \'https://example.tld/default.png\'; // fallback post thumbnail url
        $data          = [];
    
        // Loop    
        while( $recent_posts->have_posts() )
        {
            $recent_posts->the_post();
    
            // Post thumbnail from the first post
            if( 0 === $recent_posts->current_post )
                $thumbnail_url = get_the_post_thumbnail_url( get_the_ID(), \'medium\' );
    
            // Collect post titles
            $data[] = the_title(
                sprintf(
                    \'<div class="title"><h3><a href="%s">\',
                    esc_url( get_permalink() )
                ),                 // before
                \'</a></h2></div>\', // after
                false              // echo
            );
        }
        wp_reset_postdata();
    
        // Output
        if( $data )
            printf(
                \'<div class="widget-wrap-sidebar" style="background-image: url(%s)">
                     <div class="my-widget">%s</div>
                 </div>\',
                esc_url( $thumbnail_url ),
                join( \'\', $data )
            );
    }
    
    希望有帮助。

相关推荐

Regenerate Thumbnails

我将自定义图像大小与add\\u image\\u size一起用于自定义帖子类型。例如,书籍自定义帖子类型if($post_type_name == \'book\'){ add_image_size(\'75x75\',75,75, true); add_image_size(\'150x150\',150,150, true); }elseif($post_type_name == \'music\'){ add_image_size(\'200