Obtener Entradas en una Categoría de Tipo de Entrada Personalizada
Tengo problemas para obtener entradas en una categoría de tipo de entrada personalizada. Tengo el código siguiente pero no funciona bien. Todavía obtiene entradas de otra categoría.
<?php
$query = null;
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
$args = array(
'post_type' => get_post_type(),
'post_status' => 'publish',
'paged' => $paged,
'post_type_cat' => 'featured', // get_post_type() devolverá post_type, añado _cat -> post_type_cat
//'orderby' => 'rand',
'posts_per_page' => 1,
'meta_query' => array(
array(
'key' => '_expiration_date',
'value' => array(0, current_time('timestamp')),
'compare' => 'BETWEEN'
)),
);
$query = new WP_Query($args);
?>
<?php if ( $query->have_posts() ) : $query->the_post(); ?>
<?php get_template_part( 'template/featured' ); ?>
<?php else : ?>
<?php get_template_part( 'template/nofeatured' ); ?>
<?php endif; ?>
<?php wp_reset_query(); ?>
¿Pueden ayudarme?
Gracias

Por lo que sé, no existe un parámetro llamado post_type_cat
, lo que necesitas usar es cat
o, si estás consultando publicaciones en una taxonomía personalizada, usarías una consulta de taxonomía.
Ejemplo de consulta por categoría:
$query = new WP_Query( 'cat=2,6,17,38' );
o
$query = new WP_Query( 'category_name=staff' );
Consulta la siguiente entrada del Codex para ver más formas de consultar por categoría:
http://codex.wordpress.org/Class_Reference/WP_Query#Category_Parameters
Ejemplo de consulta por taxonomía:
$args = array(
'post_type' => 'post',
'tax_query' => array(
array(
'taxonomy' => 'people',
'field' => 'slug', //puede ser configurado como ID
'terms' => 'bob' //si el campo es ID puedes referenciar por número de categoría/término
)
)
);
$query = new WP_Query( $args );
Consulta esta entrada para más detalles:
http://codex.wordpress.org/Class_Reference/WP_Query#Taxonomy_Parameters

@djack109 Sí funciona. Por favor consulta https://developer.wordpress.org/reference/classes/wp_query. Si aún tienes problemas después de esto, considera crear una pregunta para que la gente pueda ayudarte.

@KarueBensonKarue people
es la taxonomía. En WordPress tienes category
que es la taxonomía predeterminada para posts y tienes taxonomías personalizadas que te permiten crear cualquier otro tipo de taxonomía, como people
en este caso. Lo mejor es pensar que todas las "categorías" en WP pertenecen a alguna forma de taxonomía. Puede ser un poco confuso para los recién llegados. Así que, en resumen, en WP la taxonomía category
se aplica a post_type=post
por defecto, pero también puede adjuntarse a otros tipos de posts, al igual que las taxonomías personalizadas, o puedes crear una taxonomía personalizada para cualquier otro propósito.

No podía hacer que ninguno de los métodos anteriores funcionara. O me devolvían todo o nada. Así que después de un poco de prueba y error, hice esto:-
id
es el slug de la categoría que quiero.
if (isset($_GET["id"])) {
$id = $_GET["id"];
echo $id;
$id = get_category_by_slug( $_GET["id"] );
if (isset($id)) {
$id = $id->term_id;
$args = array(
'post_status' => 'publish',
'post_type' => 'Products',
'cat' => $id,
);
}
}
$query = new WP_Query($args);
Soy nuevo en WordPress, habiendo programado en casi todos los demás lenguajes, y no tengo idea si esta es una buena o mala forma de hacer las cosas, solo sé que funciona para lo que necesito :)

Sé que esto es antiguo, pero no pude encontrar una respuesta clara. Así que aquí está lo que funcionó para mí:
Versión con WP_Query:
$args = array(
"post_type" => "story",
"story-category" => $category->slug
);
$query = new WP_Query( $args );
Versión con get_posts:
$stories = get_posts([
"post_type" => "story",
"story-category" => $category->slug
]);
Es tan simple como eso. Solo hay que pasar el tipo de entrada personalizada (custom post type), y luego el slug de la categoría en un parámetro con el mismo nombre que el slug de la categoría del tipo de entrada personalizada. Espero que esto tenga sentido :)
