echo 语句中的 WP 后备图像

Posted

技术标签:

【中文标题】echo 语句中的 WP 后备图像【英文标题】:WP fallback image in echo statement 【发布时间】:2017-01-17 19:03:16 【问题描述】:

我正在回显相关帖子小部件的一些 html。我想显示缩略图('get_the_post_thumbnail'),如果它有一个,如果没有,则显示一个后备。我不知道我是否应该在 var 中使用 if/else 语句(不能让它工作)或者最好的方法是什么。

这是我的回显代码:

echo '<div class="l-four"><div class="l-twelve l-mb1 recentThumb t-center">' . get_the_post_thumbnail($recent["ID"], 'thumbnail') .'</div><div class="l-twelve f-size14 f-l-height16 t-center"><a href="' . get_permalink($recent["ID"]) . '" class="c-gold">' . $recent["post_title"] .'</a></div></div>';

我尝试在 var 中使用 if/else:

if ( has_post_thumbnail() ) 
    $img = get_the_post_thumbnail( $recent["ID"] );
 else 
    $img = '<img src="path/to/image" />';

然后回显:

echo '<div class="l-four"><div class="l-twelve l-mb1 recentThumb t-center">' . $img .'</div><div class="l-twelve f-size14 f-l-height16 t-center"><a href="' . get_permalink($recent["ID"]) . '" class="c-gold">' . $recent["post_title"] .'</a></div></div>';

但它只是默认为 else 语句,而不是从有它的文章中提取缩略图。

整个代码块

<?php 
    if ( has_post_thumbnail() ) 
        $img = get_the_post_thumbnail( $recent["ID"] );
     else 
        $img = '<img src="path/to/image" />';
                
    $args = array( 'numberposts' => '3');
    $recent_posts = wp_get_recent_posts( $args );
    foreach ( $recent_posts as $recent ) 
        echo '<div class="l-four"><div class="l-twelve l-mb1 recentThumb t-center">' . $img .'</div><div class="l-twelve f-size14 f-l-height16 t-center"><a href="' . get_permalink($recent["ID"]) . '" class="c-gold">' . $recent["post_title"] .'</a></div></div>';               
    
?>

【问题讨论】:

if/else 语句很好。问题似乎在于has_post_thumbnail() 返回 false,但我怀疑我们能否轻松弄清楚它为什么会这样。你到底在哪里使用这段代码? 如果你评估 get_the_post_thumbnail() 而不是 has_post_thumbnail() 不是更简单吗? 在上面添加了整个代码 在我看来,您的检查 has_post_thumbnail()$post 全局实际上并没有引用您的查询。尝试将您使用的帖子的 ID 传递给它。查看您正在使用的查询也可能会有所帮助。 我该怎么做?上面添加了整个代码。 【参考方案1】:

从您的代码看来,您似乎是在实际获得相关帖子之前尝试获取缩略图。例如,当 $recent 对象似乎仍然不存在时,您正在引用 $recent["ID"]。我想这样的事情可能对你有用:

$args = array( 'numberposts' => '3');
$recent_posts = wp_get_recent_posts( $args );
foreach ( $recent_posts as $recent ) 
    if ( has_post_thumbnail($recent["ID"]) ) 
        $img = get_the_post_thumbnail( $recent["ID"] );
     else 
        $img = '<img src="path/to/image" />';
    

    echo '<div class="l-four"><div class="l-twelve l-mb1 recentThumb t-center">' . $img .'</div><div class="l-twelve f-size14 f-l-height16 t-center"><a href="' . get_permalink($recent["ID"]) . '" class="c-gold">' . $recent["post_title"] .'</a></div></div>';               

【讨论】:

太棒了,谢谢。所以这是一个范围问题?将 if/else 移动到 foreach 中将其固定。 与其说是范围问题,不如说是控制流问题:您想浏览每篇文章并检查图像,因此您必须循环使用foreach 并使用@987654325 进行测试@里面。

以上是关于echo 语句中的 WP 后备图像的主要内容,如果未能解决你的问题,请参考以下文章

cron 运行的 shell 脚本中的 echo 语句 [重复]

如何将函数调用中的 echo 语句分配给变量?

for语句中的几种分隔符形式

在 echo 语句中添加 PHP 变量作为 href 链接地址?

Shell脚本------循环语句(for,while,until循环语句)

php 中的 continue 语句不起作用?