Ottenere i Post in una Categoria di Custom Post Type

7 mag 2013, 07:29:27
Visualizzazioni: 60.6K
Voti: 6

Ho difficoltà ad ottenere i post in una categoria di custom post type. Ho il codice qui sotto ma non funziona correttamente. Continua a recuperare post da altre categorie.

<?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() restituirà post_type, ho aggiunto _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(); ?>

Potete aiutarmi?

Grazie

1
Commenti

Qual è il nome della categoria?

montrealist montrealist
7 mag 2013 07:59:15
Tutte le risposte alla domanda 3
5

Per quanto ne so, non esiste un parametro chiamato post_type_cat, dovresti usare cat oppure, se stai interrogando post in una tassonomia personalizzata, dovresti usare una query di tassonomia.

Esempio di query per categoria:

$query = new WP_Query( 'cat=2,6,17,38' );

oppure

$query = new WP_Query( 'category_name=staff' );

Consulta la seguente voce del Codex per altri modi di interrogare per categoria:

http://codex.wordpress.org/Class_Reference/WP_Query#Category_Parameters

Esempio di query per tassonomia:

$args = array(
    'post_type' => 'post',
    'tax_query' => array(
        array(
            'taxonomy' => 'people',
            'field' => 'slug', //può essere impostato su ID
            'terms' => 'bob' //se il campo è ID puoi fare riferimento al numero di cat/term
        )
    )
);
$query = new WP_Query( $args );

Consulta questa voce per maggiori dettagli:

http://codex.wordpress.org/Class_Reference/WP_Query#Taxonomy_Parameters

7 mag 2013 09:01:56
Commenti

non funziona :(

djack109 djack109
30 mag 2020 14:08:52

@djack109 Funziona. Ti consiglio di consultare https://developer.wordpress.org/reference/classes/wp_query. Se continui ad avere problemi dopo questo, considera di creare una domanda così che le persone possano aiutarti.

Adam Adam
31 mag 2020 18:03:08

Ho risolto, vedi sotto

djack109 djack109
31 mag 2020 19:19:22

in questo caso, people è una categoria?

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

@KarueBensonKarue people è la tassonomia. In WordPress hai category che è la tassonomia predefinita per i post e hai tassonomie personalizzate che ti permettono di creare qualsiasi altro tipo di tassonomia, come people in questo caso. È meglio pensare a tutte le "categorie" in WP come appartenenti a qualche forma di tassonomia. Può essere un po' confuso per i nuovi arrivati. Quindi, in sintesi, in WP la tassonomia category si applica a post_type=post per impostazione predefinita, ma può anche essere associata ad altri tipi di post proprio come le tassonomie personalizzate oppure puoi creare una tassonomia personalizzata per qualsiasi altro scopo.

Adam Adam
5 giu 2020 23:22:24
0

Non riuscivo in alcun modo a far funzionare nessuna delle soluzioni sopra indicate. O restituivano tutto o niente. Così, dopo un po' di tentativi ed errori, ho fatto così:-

id è lo slug della categoria che voglio.

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

Sono nuovo di WordPress, avendo programmato in quasi ogni altro linguaggio, e non ho idea se questo sia un modo buono o cattivo di fare le cose, so solo che funziona per le mie esigenze :)

30 mag 2020 14:10:33
0

So che è vecchio, ma non sono riuscito a trovare una risposta chiara. Ecco cosa ha funzionato per me:

Versione WP_Query:

$args = array(
    "post_type"      => "story",
    "story-category" =>  $category->slug
);
$query = new WP_Query( $args );


Versione get_posts:

$stories = get_posts([
    "post_type"      =>  "story",
    "story-category" =>  $category->slug       
 ]);

È così semplice. Basta passare il custom post type, e poi lo slug della categoria in un parametro con lo stesso nome dello slug della categoria del custom post type. Spero abbia senso :)

11 feb 2024 23:52:30