PHP使用.=在错误的位置输出


PHP outputting in wrong place using .=

我很难理解.=运算符为什么在我想要的地方输出我的代码。它应该在列表元素之间。

这是PHP

<?php 
    function tcc_display_carousel() {
        $reval  = '<div id="tcc_carousel">';
        $reval .= '<ul class="bjqs">';
        $args = array('post__not_in' => array(133), 
                      'post_type' => 'tcc_carousel', 
                      'posts_per_page' => ''. $tcc_ppp .'', 
                      'order' => 'ASC');
        $loop = new WP_Query( $args );
        if ( $loop->have_posts() ) : 
            while (  $loop->have_posts() ) :  
                $loop->the_post(); 
                $reval .= '<li>';
                $reval .= the_post_thumbnail('tcc-thumbnail');
                $reval .= '</li>';
                //No post displays
            endwhile; 
        else:
            $reval .= '<h2>No posts to display</h2>';
        endif;
        $reval .=  '</ul>';
        $reval .=  '</div>';
        return $reval;  
    }
?>

&这是它输出的html:

<img class="attachment-tcc-thumbnail wp-post-image" width="882" height="292" alt="01"  src="http://dcs.dev/wp-content/uploads/2013/08/01.png">
<div id="tcc_carousel">
    <ul class="bjqs">
      <li></li>
      </ul>
</div>
</div>

我已经尝试过了,我猜这与介于两者之间的查询有关,但我不知道如何将$reval添加到查询中。

我正在为wordpress构建一个插件,所以这就是我把它放在函数中的原因。

_post_thumbnail不会返回,而是将其自身回波

如果需要操作,可以使用输出缓冲来捕获它

$reval .= '<li>';
ob_start()
   the_post_thumbnail('tcc-thumbnail');
   $thumb = ob_get_contents();
ob_end_clean;
$reval .= $thumb;
$reval .= '</li>';

或者,正如dev-null-dister提到的,你可以使用get_the_post_thumbnail(null, 'tcc-thumbnail');

$reval .= '<li>';
$reval .= get_the_post_thumbnail(null, 'tcc-thumbnail');
$reval .= '</li>';

这可能与WordPress的一个函数试图从函数中回显值有关。

试着做一些类似的事情

function tcc_display_carousel_obj() {
    ob_start();
    tcc_display_carousel();
    $output=ob_get_contents();
    ob_end_clean();
    return $output;
}

然后使用tcc_display_carousel_obj而不是调用您的转盘