Obtener Entradas en una Categoría de Tipo de Entrada Personalizada

7 may 2013, 07:29:27
Vistas: 60.6K
Votos: 6

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

1
Comentarios

¿Cuál es el nombre de la categoría?

montrealist montrealist
7 may 2013 07:59:15
Todas las respuestas a la pregunta 3
5

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

7 may 2013 09:01:56
Comentarios

no funciona :(

djack109 djack109
30 may 2020 14:08:52

@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.

Adam Adam
31 may 2020 18:03:08

Ya lo hice funcionar, mira abajo

djack109 djack109
31 may 2020 19:19:22

en este caso, ¿es la categoría people?

Karue Benson Karue Karue Benson Karue
2 jun 2020 14:50:49

@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.

Adam Adam
5 jun 2020 23:22:24
0

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 :)

30 may 2020 14:10:33
0

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 :)

11 feb 2024 23:52:30