WordPress 简码输出在页面上重复

WordPress Shortcode output is duplicated on page

我创建了一个 ACF 图像字段,我想将其添加到我的产品描述中。

然后我通过以下代码创建了一个简码:

function imgun_shortcode() {
$imgun = get_field('imgun')['sizes']['thumbnail']; // (thumbnail, medium, large, full or custom size)?>
<div>
    <img src="<?php echo $imgun;?>">
</div> <?php 
}

add_shortcode('imgun', 'imgun_shortcode'); 

然后我在扩展“block”中添加这个简码:

我通过产品描述中的短代码添加此页面,图像字段位于 2 次而不是短代码的位置,我不明白为什么。我的其他ACF“文本”字段没有这个问题。

你有什么想法吗?

您不能回显短代码的输出。 Note that the function called by the shortcode should never produce output of any kind. Shortcode functions should return the text that is to be used to replace the shortcode.https://codex.wordpress.org/Shortcode_API

你可以这样做...

function imgun_shortcode() {
    ob_start();
    $imgun = get_field( 'imgun' )['sizes']['thumbnail']; // (thumbnail, medium, large, full or custom size)?>
    <div>
        <img src="<?php echo esc_url( $imgun ); ?>">
    </div> <?php
    return ob_get_clean();
}
add_shortcode( 'imgun', 'imgun_shortcode' );

或者你可以这样做...

function imgun_shortcode() {
    $imgun = get_field('imgun')['sizes']['thumbnail']; // (thumbnail, medium, large, full or custom size).
    return '<div><img src="' . esc_url( $imgun ) . '"></div>';
}

add_shortcode('imgun', 'imgun_shortcode');