Функция вывода шаблона темы через shortcode в WordPress


Weblady
295

Хотелось бы с помощью шорткода добавить на страницу вывод шаблона content-latestpost.php темы из папки /тема/template-parts.

Функция регистрации шорткода добавляется в functions.php

function text_short() {

return 'Любой нужный текст. который нужно выводить внутри текста Вашей записи.';
}
add_shortcode('ts', 'text_short');

Получаем шорткод [ts].

Подскажите, пожалуйста, код функции шорткода, которая вызовет шаблон template-parts/content-latestpost.php


ivan-lev

webledi:
код функции шорткода, которая вызовет шаблон template-parts/content-latestpost.php

смотрите в сторону https://wp-kama.ru/function/get_template_part


Weblady

ivan-lev, спасибо!

Еще столкнулась с одной проблемой. Такой код отвечает за вывод виджета последних записей:

<?php query_posts('cat=1'); // вместо "3" указываем идентификатор вашей рубрики.
while ( have_posts() ) :
the_post();

get_template_part( 'template-parts/content-statyi-main', get_post_type() );
endwhile; // End of the loop.

wp_pagenavi();
?>

С помощью этого шорткода виджет добавлен на главную страницу:

[su_posts template="statyi-for-main.php"]

Отображается блок с последними записями корректно, но почему-то внизу страницы этот блок с записаями дублируется еще раз. Подскажите, пожалуйста, как попросить код не дублировать этот блок повторно.


Sitealert

webledi:
как попросить код не дублировать этот блок повторно.

Он уже отвечал на этот вопрос.


Weblady

Sitealert:
Он уже отвечал на этот вопрос.

Если поменять местами

get_template_part( 'template-parts/content-statyi-main', get_post_type() );

и

endwhile;

, в нужном блоке показывается только одна запись (вместо нужных трех), а внизу блок также дублируется с тремя записями😕

———- Добавлено 25.01.2020 в 11:13 ———-

Удалось справиться с помощью wp_query

<?php $query = new WP_Query(array(

'posts_per_page' => 3,
'cat' => 1));
if($query->have_posts()):while($query->have_posts()):$query->the_post();

get_template_part( 'template-parts/content-statyi-main', get_post_type() );
//post
endwhile;
else:
//net postov
endif;
?>

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *