Как создать шорткод для вывода 2 последних записей
26 июн. 2014 г., 12:31:29
Просмотры: 13.9K
Голосов: 2
Я хочу создать шорткод, который будет выводить последние 3 записи на любую страницу...
Он должен выглядеть следующим образом
Заголовок
Краткое описание...Читать далее
Я добавил этот код в functions.php
function my_recent_post()
{
global $post;
$html = "";
$my_query = new WP_Query( array(
'post_type' => 'post',
'posts_per_page' => 2
));
if( $my_query->have_posts() ) : while( $my_query->have_posts() ) : $my_query->the_post();
$html .= "<h2>" . get_the_title() . " </h2>";
$html .= "<p>" . get_the_excerpt() . "</p>";
$html .= "<a href=\"" . get_permalink() . "\" class=\"button\">Читать далее</a>";
endwhile; endif;
return $html;
}
add_shortcode( 'recent', 'my_recent_post' );
и он работает, но теперь на главной странице отображаются 2 записи, как и нужно, в отдельном блоке, но проблема в том, что под контентом, то есть под блоком с шорткодом, отображается полный текст второй статьи (см. изображение).
Есть предложения как это исправить?
Все ответы на вопрос
2
1
Добавьте wp_reset_postdata()
после вашего цикла while
:
endwhile;
wp_reset_postdata();
endif;
Это гарантирует, что после выполнения шорткода будет восстановлен текущий пост, чтобы любые теги шаблона отображали правильные данные.

TheDeadMedic
36.6K
26 июн. 2014 г. 12:56:46
2
function my_recent_post()
{
global $post;
$html = "";
$my_query = new WP_Query( array(
'post_type' => 'post',
'posts_per_page' => 2
));
if( $my_query->have_posts() ) : while( $my_query->have_posts() ) : $my_query->the_post();
$html.= get_template_part( 'content', 'excerpt' );
endwhile; endif;
return $html;
}
add_shortcode( 'recent', 'my_recent_post' ); ?>
**<h1>Создайте файл content-excerpt.php и разместите его в вашей теме</h1>
Код этого файла:
<article id="post-<?php the_ID(); ?>">
<header class="entry-header">
<h2><a href="<?php the_permalink() ?>"><?php the_title(); ?></a></h2>
</div>
</header>
<div class="entry-excerpt">
<?php the_excerpt(); ?>
</div>
<a href="<?php get_permalink() ?>" class="button">Читать далее</a>
</article>

TBI Infotech
989
26 июн. 2014 г. 13:23:01
Комментарии
Как это будет работать? get_template_part
выводит содержимое, а не возвращает его.

27 июн. 2014 г. 10:47:57
Похожие вопросы