Cómo llamar categorías de taxonomía personalizada con shortcodes
Acabo de resolver una pregunta aquí: Cómo mostrar posts de una sola categoría dentro de una taxonomía personalizada
Ahora me pregunto cómo tomar este código:
<?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();
// hacer cosas aquí
?>
<?php endwhile; ?>
y llamarlo usando shortcodes, por ejemplo para mostrar la categoría bulk-racks usando algo como [inventory-category="bulk-racks"]
Sé cómo crear un shortcode básico pero no sé cómo escribir la función que devolvería los posts basados en el nombre de categoría ingresado en el shortcode.
Una vez más, cualquier ayuda sería muy apreciada.

Echa un vistazo al shortcode de categoría de posts para tener una idea y aquí está el plugin con modificaciones menores para llamar a tu tipo de post y taxonomía:
// Shortcode de categoría de taxonomía
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');
uso:
simplemente coloca este shortcode en tus posts o páginas
[inventory-category totalposts="3" category="bulk-racks" thumbnail="true" excerpt="true" ]
- totalposts - número total de posts a mostrar. Por defecto es -1
- category - slug de la categoría. Usa comas , para múltiples slugs
- thumbnail - establece true si quieres mostrar la miniatura. Por defecto es false
- excerpt - establece true si quieres mostrar el extracto. Por defecto es true
- orderby - orden de los posts. Por defecto post_date. Revisa http://codex.wordpress.org/Template_Tags/get_posts para más detalles

Me aparece un error fatal: Error fatal: Tamaño de memoria permitido de 33554432 bytes agotado (se intentó asignar 17301490 bytes) en \wp-content\themes\ECSE\functions\inventory-shortcode.php en la línea 30. ¿Alguna idea de cuál podría ser el problema? Por cierto, esta es la línea 30 "$output .= '<div class="cat-post-list">';"

¿Crees que podría ser causado por el lento alojamiento de Go Daddy que mi cliente está usando?
