Custom shortcode. Всегда сверху страницы

Рейтинг: 1Ответов: 1Опубликовано: 27.02.2023

Вопрос не в ручной вставке шорткода, а через редактор.

//functions.php
require_once __DIR__ . '/shortcodes/custom_button_connect.php';

//file
function button_connect(){ 
  return get_template_part( 'template-parts/soc-btn' );
}
add_shortcode('button_connect', 'button_connect');

В редакторе вставляется [button_connect]. Где бы он не был вставлен, код появляется вверху страницы, а нужно именно там, где в редакторе.

Ответы

▲ 4Принят

Callback функция вашего шорткода (button_connect) должна возвращать строку. А она возвращает void|false, который преобразуется в пустую строку. Зато она выводит на экран ваш шаблон. Выводит не там, где надо.

Так правильно:

function button_connect() {
    ob_start();
    get_template_part( 'template-parts/soc-btn' );

    return ob_get_clean();
}

Код выше стартует буфер вывода, перехватывает весь вывод из шаблона в буфер, а потом возвращает содержимое буфера как результат работы функции.