Как выводить категории пользовательской таксономии с помощью шорткодов
У меня только что решили один вопрос здесь: Как выводить записи из одной категории в пользовательской таксономии
Теперь мне интересно, как взять этот код:
<?php
$args = array(
'posts_per_page' => 1,
'post_type' => 'inventory',
'tax_query' => array(
array(
'taxonomy' => 'inventory-category',
'field' => 'slug',
'terms' => array(
'bulk-racks'
)
)
)
);
query_posts( $args ); while ( have_posts() ): the_post();
// делаем что-то здесь
?>
<?php endwhile; ?>
и вызывать его с помощью шорткодов, например, чтобы отображать категорию bulk-racks, используя что-то вроде [inventory-category="bulk-racks"]
Я знаю, как создать базовый шорткод, но не понимаю, как написать функцию, которая будет возвращать записи на основе введенного в шорткод названия категории.
Еще раз, любая помощь будет очень ценной.

Ознакомьтесь с шорткодом для вывода записей категории, чтобы понять принцип работы, а вот модифицированная версия плагина для вывода вашего типа записи и таксономии:
// Шорткод для таксономии категории
function cat_func($atts) {
extract(shortcode_atts(array(
'class_name' => 'cat-post',
'totalposts' => '-1',
'category' => '',
'thumbnail' => 'false',
'excerpt' => 'true',
'orderby' => 'post_date'
), $atts));
$output = '<div class="'.$class_name.'">';
global $post;
$args = array(
'posts_per_page' => $totalposts,
'orderby' => $orderby,
'post_type' => 'inventory',
'tax_query' => array(
array(
'taxonomy' => 'inventory-category',
'field' => 'slug',
'terms' => array( $category)
)
));
$myposts = NEW WP_Query($args);
while($myposts->have_posts()) {
$myposts->the_post();
$output .= '<div class="cat-post-list">';
if($thumbnail == 'true') {
$output .= '<div class="cat-post-images">'.get_the_post_thumbnail($post->ID, 'thumbnail').'</div>';
}
$output .= '<div class="cat-content"><span class="cat-post-title"><a href="'.get_permalink().'">'.get_the_title().'</a></span>';
if ($excerpt == 'true') {
$output .= '<span class="cat-post-excerpt">'.get_the_excerpt().'</span>';
}
$output .= '</div>
<div class="cat-clear"></div>
</div>';
};
$output .= '</div>';
wp_reset_query();
return $output;
}
add_shortcode('inventory-category', 'cat_func');
Использование:
Просто вставьте этот шорткод в ваши записи или страницы
[inventory-category totalposts="3" category="bulk-racks" thumbnail="true" excerpt="true" ]
- totalposts - общее количество записей для вывода. По умолчанию -1 (все записи)
- category - ярлык категории. Для нескольких категорий используйте запятую
- thumbnail - установите true для отображения миниатюр. По умолчанию false
- excerpt - установите true для отображения цитаты. По умолчанию true
- orderby - параметр сортировки записей. По умолчанию post_date. Подробности смотрите на http://codex.wordpress.org/Template_Tags/get_posts

У меня возникает фатальная ошибка: Фатальная ошибка: исчерпан лимит памяти в 33554432 байт (попытка выделить 17301490 байт) в \wp-content\themes\ECSE\functions\inventory-shortcode.php на строке 30. Есть идеи, в чем может быть проблема? Кстати, вот строка 30: "$output .= '<div class="cat-post-list">';"

Как вы думаете, это может быть вызвано медленным хостингом Go Daddy, который использует мой клиент?
