Почему информация из шорткода Wordpress выводится вверху страницы?

Написал несколько простых шорткодов. Помещаю их на страницу в админке, в которой уже есть html-код разметки. Т.е все это выглядит примерно так:
<div class="row">
   <div class="col-md-12">[shortcode]</div>
</div>

И не смотря на то, что этот блок находится в самом низу, работа шорткода показывается всегда вверху страницы, сразу после контента из header.php. Почему такое происходит?

Сам шорткод:
function promo_block($atts, $content = null) {
extract(shortcode_atts(array(
"img" => '',
"description" => '',
"title" => ''
), $atts));
echo '<div class="col-md-4 promo-block">
            <img src="'.get_template_directory_uri().'/img/svg/'.$img.'.svg" height="64" alt="">
            <h3>'.$title.'</h3>
            <p>'.$description.'</p>
          </div>';
}
add_shortcode("pb", "promo_block");


В файле index.php:
<?php get_header(); ?>
<?php if (have_posts()) : while (have_posts()) : the_post(); ?> 
<?php the_content(); ?>
<?php endwhile; else: ?><?php endif; ?>
<?php get_footer(); ?>
  • Вопрос задан
  • 1563 просмотра
Решения вопроса 1
@vylegzhanin
Функция должна возвращать результат,а не выводить его.
Замени echo на return
function promo_block($atts, $content = null) {
extract(shortcode_atts(array(
"img" => '',
"description" => '',
"title" => ''
), $atts));
return '<div class="col-md-4 promo-block">
            <img src="'.get_template_directory_uri().'/img/svg/'.$img.'.svg" height="64" alt="">
            <h3>'.$title.'</h3>
            <p>'.$description.'</p>
          </div>';
}
add_shortcode("pb", "promo_block");
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@aleksandr_borisov
Попробуйте добавить еще один аттрибут "echo" => '1'
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы