Я использую шорткод для извлечения разных циклов через loops-name.php. По какой-то причине это всегда вверху страницы. Я гуглил его, и использование echo вместо return вызывает эту проблему, но с моим кодом я не использую echo. Вот короткий код:
// setup the shortcode for use
function friendly_loop_shortcode( $atts, $content = null ) {
extract( shortcode_atts( array(
'category' => '',
'module' => ''
), $atts ) );
include(locate_template('loop-'.$module.'.php'));
}
Есть идеи, почему это происходит?
get_template_part('loop',$module)
вместо этого, это красивее, быстрее набирать текст, поддерживает родительские / дочерние темы, и это рекомендуемый метод включения шаблонов в WordPress (да, locate_template может делать некоторые из этих вещей, но посмотрите, насколько он менее читабелен!)Ответы:
Вы можете буферизовать вывод следующим образом:
РЕДАКТИРОВАТЬ. Я попробовал это, работал нормально.
источник
Ваш включенный файл по сути повторяет HTML. Например
Такой же как
Оба печатаются сразу, а не возвращаются. Поскольку он напечатан, он появляется перед содержимым страницы. Вам нужно что-то вернуть, чтобы это было включено в контент.
Как указал @RutwickGangurde - это необычно включать файл шаблона в шорткод.
источник
dynamic_sidebar()
внутреннюю петлю и разрешите пользователям добавлять виджеты.