自定义最近发布的快捷代码的缩略图与其余代码不一致

时间:2020-02-17 作者:Alex Mattelon

我正在制作一个自定义的最近帖子快捷码,我对缩略图有一个问题,它总是将其显示在所有内容之上(永久链接、标题等)即使我把它放在代码后面,wordpress中是否有强制这种行为的东西?

代码如下:

function mmx_recent_posts_shortcode($atts, $content = NULL)
{
    $atts = shortcode_atts(
        [
            \'orderby\' => \'date\',
            \'posts_per_page\' => \'3\'
        ], $atts, \'recent-posts\' );

    $query = new WP_Query( $atts );

    if ( $query->have_posts() ) {
        $output = \'<div class="row">\';

        while($query->have_posts()) : $query->the_post();

            $output .= \'<div class="col span_4">
                <h4>\' . get_the_title() . \'</h4>
                <a href="\' . get_permalink() . \'">Lire la suite</a>\' . the_post_thumbnail(\'thumbnail\', [\'class\' => \'droplet-img\', \'title\' => get_the_title()]) . \'
            </div>\';

        endwhile;

        wp_reset_query();

        return $output ; \'</div>\';
    }
}
add_shortcode(\'mmx-recent-posts\', \'mmx_recent_posts_shortcode\');
水滴img的css代码:

.droplet-img {
    border-radius: 0 50% 50%;
}
下面是当前情况的屏幕截图:

how it looks

下面是我想要的:

enter image description here

如果有人知道如何修复它,我将不胜感激!

谢谢

2 个回复
SO网友:WebElaine

问题是:

the_post_thumbnail() 立即输出其内容。基本上就像echoing代替returning。

要修复它,您应该能够

the_post_thumbnail(\'thumbnail\', [\'class\' => \'droplet-img\', \'title\' => get_the_title()])
具有

get_the_post_thumbnail(\'thumbnail\', [\'class\' => \'droplet-img\', \'title\' => get_the_title()])

SO网友:Alex Mattelon

谢谢大家的帮助,这帮助我走上了正确的方向。

这是我的最终代码:

function mmx_recent_posts_shortcode()
{
    $args = array(
        \'orderby\' => \'date\',
        \'posts_per_page\' => 3
    );

    $posts = get_posts( array( $args ) );

    foreach ( $posts as $post ) {
        if ( has_post_thumbnail( $post->ID ) ) {
            echo \'<div class="col span_4 mmx-recent-posts">
                <h4>\' . esc_attr( $post->post_title ) . \'</h4>
                <a href="\' . get_permalink( $post->ID ) . \'">Lire la suite</a>\' . get_the_post_thumbnail($post->ID, \'thumbnail\', array(\'class\' => \'droplet-img\', \'title\' => esc_attr( $post->post_title ))) . \'
            </div>\';
        }
    }
}

相关推荐

Custom Post type shortcodes

我使用高级自定义字段在我的主题中创建自定义帖子类型(功能)。我想知道如何创建自定义帖子类型的短代码。因此,我只使用任何页面的自定义帖子类型的短代码来显示我在自定义帖子类型(功能)中添加的信息。