Shortcode в виджетах печатает перед заголовком

{Этот вопрос отмечен как дубликат, но я думаю, что мой вопрос и ответ на него намного проще, чем исходный}

Привет, у меня есть следующий код, который отображается перед заголовком виджета. Насколько я понимаю из моих исследований, я должен использовать возврат, но он не работает. Пожалуйста помоги.

<?php function get_review_code(){ echo '<div class="review-slider-wrap">'; echo '<ul class="review-slider">'; global $post; $args = array( 'numberposts' => 10, 'category_name' => 'review' ); $posts = get_posts( $args ); foreach( $posts as $post ): setup_postdata($post); echo '<li>'; echo '<div class="white-curve">'; echo the_excerpt(); $author_id=$post->post_author; echo '<div class="author_full_name">'; echo '- '; echo the_author_meta('first_name'); echo '&nbsp;'; echo the_author_meta('last_name'); echo '</div>'; echo '</div>'; echo get_avatar( $post->post_author, 230 ); echo '</li>'; endforeach; echo '</ul>'; echo '</div>'; } add_shortcode('review_review', 'get_review_code'); 

Solutions Collecting From Web of "Shortcode в виджетах печатает перед заголовком"

Некоторые вызовы в вашей функции будут эхом, а не возвратом. Вместо the_author_meta используйте get_the_author_meta . Вместо the_excerpt используйте get_the_excerpt . И используйте подход jycr753; верните всю строку, а не эхо.

shortcut должен возвращать значение, если вы его эхо, это поместит его раньше всего. попробуйте это: (не проверено)

 <?php function get_review_code(){ global $post; $content = ""; $content .= '<div class="review-slider-wrap">'; $content .= '<ul class="review-slider">'; $args = array( 'numberposts' => 10, 'category_name' => 'review' ); $posts = get_posts( $args ); foreach( $posts as $post ): setup_postdata($post); $content .= '<li>'; $content .= '<div class="white-curve">'; $content .= get_the_excerpt(); $author_id = $post->post_author; $content .= '<div class="author_full_name">'; $content .= '- '; $content .= get_the_author_meta('first_name'); $content .= '&nbsp;'; $content .= get_the_author_meta('last_name'); $content .= '</div>'; $content .= '</div>'; $content .= get_avatar( $post->post_author, 230 ); $content .= '</li>'; endforeach; $content .= '</ul>'; $content .= '</div>'; return $content; } add_shortcode('review_review', 'get_review_code'); ?>