在来自其他CPT的自定义帖子中显示帖子缩略图

时间:2019-07-13 作者:Pete Hayman

我有一个“比赛”CPT为足球队的每场比赛创建帖子。这些帖子通过从另一个CPT-“俱乐部”的相应帖子中提取信息,显示对手球队的详细信息。我还没有弄清楚的一点是如何获得缩略图。

当前代码为:

    <h2 class="match-team">
        <span class="match-badge">
        <?php 
        $opposition = get_field(\'club\');
        if($opposition):
        ?>
        <img src="https://www.MYDOMAIN.co.uk/images/club/<?php echo $opposition->post_name; ?>.jpg" class="match-badge-img">
        </span>
        <a class="match-name" href="/clubs/<?php echo $opposition->post_name; ?>/" >
        <span>
                <?php echo $opposition->post_title;?>
        </span>
        </a>                
    <?php endif; ?>
    <span class="match-score"><?php the_field(\'opposition_goals\'); ?></span>
    </h2>
如果俱乐部有已上传的唯一图像,即俱乐部1有图像或俱乐部13有图像,则当前img src有效。但并非所有俱乐部都是这样,例如,俱乐部2没有形象。因此,这将返回断开的图像链接。

没有图片的俱乐部有一个通用的占位符作为他们的特色图片,所以我的解决方案是更改img src路径,以便它能够引入该特色图片。我用过这个,但没有效果:

<img src="<?php echo wp_get_attachment_url( get_post_thumbnail_id($opposition->post_name) ); ?><?php echo get_the_post_thumbnail($opposition->post_name); ?>" class="match-badge-img">
以及

<?php echo $opposition->the_post_thumbnail(\'medium\', array( \'class\' => \'match-badge-img\' ) ); ?>
但是,也不要通过适当的缩略图,这表明我在一些非常基本的问题上出错了。可以$opposition-> 是否在此上下文中使用?

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

如果要获取帖子缩略图URL,可以使用get_the_post_thumbnail_url():

<?php $image_path = \'images/club/\' . $opposition->post_name . \'.jpg\'; // relative to the root directory
if ( @file_exists( ABSPATH . $image_path ) ) { // Check the unique image first.
    $thumbnail = home_url( \'/\' . $image_path );
} elseif ( has_post_thumbnail( $opposition ) ) { // Then the post thumbnail.
    $thumbnail = get_the_post_thumbnail_url( $opposition, \'medium\' );
}

if ( ! empty( $thumbnail ) ) : ?>
    <img src="<?php echo esc_url( $thumbnail ); ?>" class="match-badge-img" />
<?php endif; ?>
如果要获取帖子缩略图,可以使用get_the_post_thumbnail():

<?php $image_path = \'images/club/\' . $opposition->post_name . \'.jpg\'; // relative to the root directory
if ( @file_exists( ABSPATH . $image_path ) ) : // Check the unique image first. ?>
    <img src="<?php echo esc_url( home_url( \'/\' . $image_path ) ); ?>" class="match-badge-img" />
<?php elseif ( has_post_thumbnail( $opposition ) ) : // Then the post thumbnail. ?>
    <?php echo get_the_post_thumbnail( $opposition, \'medium\', [ \'class\' => \'match-badge-img\' ] ); ?>
<?php endif; ?>
还有the_post_thumbnail_url()the_post_thumbnail(), 但这些函数用于循环中的当前post,而不是像您的示例中那样的自定义post对象$opposition.

在上述示例中,我假设唯一图像文件的名称始终以.jpg.

相关推荐

Gallery thumbnails very small

当我使用标准WordPress图库时,我会在内容中获得非常小的缩略图:由于内容中有很多空间,我想显示更大的图像。我该怎么做?主题中没有添加特定的库代码。