Я создал собственный посттип и использую поля из ACF. Я сделал этот цикл, который хорошо работает во внешнем интерфейсе .., но при сохранении сообщения в CPT он дает ошибку: заголовки уже отправлены. Ошибка относится к строке сразу под оператором 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>';
} 
0
Morten 27 Ноя 2021 в 06:05

1 ответ

Лучший ответ

Функция шорткода должна возвращать содержимое, а не отображать его. Кроме того, я думаю, вам не хватало фигурных скобок в заявлении 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;
} 
0
Dave S 27 Ноя 2021 в 07:16
Огромное спасибо. Ты спас мне день ...
 – 
Morten
27 Ноя 2021 в 08:38