Понадобилось мне однажды выводить содержимое нескольких разных постов в содержимом специальной страницы. Казалось бы, нет ничего проще – скопировал и вставил. Однако если нужно будет со временем изменять посты, из которых брать содержимое, то копипаст содержимого этих постов – не самый оптимальный путь. В итоге я пришел к решению сделать специальный шорткод.
Этот шорткод можно вставлять в содержимое любой страницы, и в результате его работы будет выводиться содержимое указанного поста. Тоже хотите такой шорткод? Тогда откройте файл файл functions.php и добавьте в него следующий код:
function tr_post_include($atts) { $thepostid = intval($atts[id]); $output = ''; query_posts("p=$thepostid"); if (have_posts()) : while (have_posts()) : the_post(); $output .= get_the_content($post->ID); endwhile; else: // ничего не выводит endif; wp_reset_query(); return $output; } add_shortcode("pst_inc", "tr_post_include");
Пример использования шорткода:
[pst_inc id="XX"]
XX – это ID поста. Довольно простой шорткод: просто указываете ID поста, и его содержимое выводится в нужном месте страницы. Если вы ничего не укажете или укажете несуществующий ID, то шорткод просто ничего не выведет. Шорткод удобен тем, что с его помощью можно обойтись без создания специального шаблона для такой страницы.

если вставить 100 шорткодов на страницу – блог упадет от такого количества запросов?
Если использовать кэширование, то ничего с блогом не случится. Один раз сделает дикое количество запросов, а потом будет обходиться без них.
Все получилось!!! Огромное спасибо, но на странице выводит один пост, ка же сделать чтоб выводились все посты из какой то одной(или нескольких) категорий?
Супер – то что искал, даже спросил на форуме вордпреса, но может быть вы подскажете тогда такой момент: а если выводить не одну запись – а несколько, списком.
Я себе тут нарисовал задачу – у меня есть главная страница. которая разделена на несколько колонок. В одной у меня общая инфа про компанию, а в правой есть есть новости которые пишем руками и бла бла бла. Я хочу сделать рубрику Новости и выводить только содержимое записей, без заголовка но с датой. Выводить хочется всего 3 записи и сделать ссылку еще чтобы открывалась рубрика со всеми новостями.
Каждый раз прописывать ручками номер новости – уже легче задача, но хочется не заморачиваясь – постить короткие новости.
Рубрику “Новости” и ее содержимое закрыть от индексации чтобы роботы не сканировали короткие записи
Вы хотите выводить с помощью шорткода несколько последних постов из определенной категории? Тогда удобнее смастерить другой шорткод. Например, такой:
Использование:
id – это ID категорий, из которых нужно выводить посты
count – количество последних постов
Спасибо за код, мне еще рекомендовали mini-loop модуль – пока я с ним проколупался и вставил ваш код вы сделали то что нужно – спасибо – я сейчас исправлю код. Все работает как часики – заключил в span и выводится все красиво
Доброго времени суток подскажите пожалуйста. А как добавить шорткод для собственного типа постов? Например: нашол я в интернете как регистрировать – зарегистрировал
register_post_type(‘gadgets’,
array(
‘labels’ => array(
‘name’ => __(‘Gadgets’),
‘singular_name’ => __(‘Gadget’),
//остальные переводы
),
‘public’ => true,
‘publicly_queryable’ => true,
‘query_var’ => true,
‘taxonomies’ => array(‘category’,’post_tag’),
‘supports’ => array(‘title’,’editor’,’author’,’thumbnail’,’excerpt’,’comments’),
‘rewrite’ => array(‘slug’ => ‘gadgets’),
//другие настройки
)
);
но шорткод их не выводит(((
Благодарю!
Переписал… Вопрос снят…добавил в начало кода данные
$args = array(
‘post_type’ => ‘gadgets’,
………
ещё раз благодарю… отличный шорт код…..
Добрый день, а как вывести по id не весь пост, а лишь определённый кусок? Например есть в записи таблица с ценами и её нужно по id вывести на другой странице.
Warning: Use of undefined constant id – assumed ‘id’ (this will throw an Error in a future version of PHP) in /home/c/ce85284/wordpress_145/public_html/wp-content/themes/generatepress/functions.php on line 440