使用 CPT 和 ACF 在循环中出现 'Headers already sent' 错误

Getting 'Headers already sent' error in loop with CPT and ACF

我创建了自定义 posttype 并使用 ACF 中的字段。 我制作了这个在前端运行良好的循环..,但是当在 CPT 中发送 post 时,它给出错误:Headers alreday sent。 错误指的是 if( $posts ) 语句正下方的行。

这里有什么问题吗?

add_shortcode("custom_acf", "event_loop_shortcode");
function event_loop_shortcode() {
$posts = get_posts(array(
    'posts_per_page' => -1,
    'post_type'      => 'event'
));
if( $posts ) 
    echo    '<div class="event"><div class="event_title"><h3>';
        the_title();
    echo    '</h3></div><div class="event_date">';
        the_field("dato");
    echo    '</div></div>';
} 

简码函数应该 return 内容而不是回显它。另外,我认为您的 if 语句缺少大括号。

add_shortcode("custom_acf", "event_loop_shortcode");
function event_loop_shortcode() {
    $posts = get_posts(array(
        'posts_per_page' => -1,
        'post_type'      => 'event'
    ));
    if ( $posts ) { 
        ob_start();
            echo    '<div class="event"><div class="event_title"><h3>';
                the_title();
            echo    '</h3></div><div class="event_date">';
                the_field("dato");
            echo    '</div></div>';
        $result = ob_get_clean();
    } else {
        $result = '';
    }
    return $result;
}