@IQprint

Как сделать так, чтобы информация по шорткоду выводилась туда, куда вставлен сам шорткод?

Для вывода содержимого одной страницы на другие используем вот такой шорткод:

function get_post_page_content( $atts ) {
extract( shortcode_atts( array(
'id' => null,
), $atts ) );

$the_query = new WP_Query( 'page_id='.$id );
while ( $the_query->have_posts() ) {
$the_query->the_post();
the_content();
}
wp_reset_postdata();
}
add_shortcode( 'content_insert', 'get_post_page_content' );

Но он выводит содержимое почему то в начало страницы, а не туда, куда был вставлен шорткод. Например, вставляем шорткод после текстового абзаца, а выводится сначала содержимое по шорткоду, а потом текстовый абзац. Как исправить, чтобы вставлялось туда, где размещен шорткод?
  • Вопрос задан
  • 63 просмотра
Пригласить эксперта
Ответы на вопрос 2
azerphoenix
@azerphoenix
Java Software Engineer
Все верно...

$the_query = new WP_Query( 'page_id='.$id );
while ( $the_query->have_posts() ) {
$the_query->the_post();
the_content();
}
wp_reset_postdata();

тут вы вставляете контент, а необходимо исопльзовать return, чтобы выводить содержимое шорткода только в указанном месте.

Вот, простой пример - https://wordpress.stackexchange.com/questions/7555...

I have had this problem before: shortcodes shouldn't display any content (using print or echo), instead return the content to be outputted.

If it's too much trouble converting all of your output statements, or you need to use a function that will always display the output, you can use output buffering. A buffer will 'catch' any echo'd or print'd content and allow you to write it to a variable.
Ответ написан
Комментировать
@IQprint Автор вопроса
Если не очень сложно, допишите правильный код, используя return, у нас не получилось. Будем безмерно благодарны.
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы