Contare i post all'interno di un custom post type con tassonomia e termini specifici?

4 mar 2013, 04:49:59
Visualizzazioni: 62.3K
Voti: 9

Sto cercando di contare quanti post sono presenti nel custom post type chiamato "videos", ma solo quelli appartenenti alla categoria "work".

<?php $count_posts = wp_count_posts('videos'); echo $count_posts->publish; // ?>

Come posso modificare il codice sopra per ottenere questo risultato?

Grazie!

0
Tutte le risposte alla domanda 7
1

Una soluzione alternativa utilizzando WP_Query sarebbe:

$args = array(
  'cat' => 4,
  'post_type' => 'videos'
);
$the_query = new WP_Query( $args );
echo $the_query->found_posts;
2 mar 2014 23:53:48
Commenti

I tipi di post personalizzati utilizzano tassonomie, non "categorie", quindi questo è sbagliato.

Jesse Nickles Jesse Nickles
3 feb 2022 12:54:59
2

Per una tassonomia personalizzata specifica prova:

$the_query = new WP_Query( array(
    'post_type' => 'CUSTOM_POST_TYPE',
    'tax_query' => array(
        array(
            'taxonomy' => 'CUSTOM_TAXONOMY',
            'field' => 'id',
            'terms' => TERM_ID
        )
    )
) );
$count = $the_query->found_posts;

Documentazione su https://codex.wordpress.org/Class_Reference/WP_Query#Taxonomy_Parameters

26 ago 2015 14:30:32
Commenti

Assicurati di cambiare in echo $count = $the_query->found_posts; se vuoi mostrare il risultato effettivo in frontend.

Jesse Nickles Jesse Nickles
3 feb 2022 12:40:55

Questa dovrebbe essere la risposta accettata (o quella con più voti).

Jesse Nickles Jesse Nickles
7 feb 2022 12:38:38
3

Trovata una soluzione.

<?php $posts = get_posts('post_type=videos&category=4'); 
$count = count($posts); 
echo $count; 
?>
4 mar 2013 05:03:16
Commenti

Pessima idea. Cosa succede se hai 15000 articoli? Li metti TUTTI in memoria? Questi sono i tipi di equivoci che potrebbero distruggere un sito in produzione.

Cranio Cranio
4 mar 2016 17:12:05

Come menzionato da @Cranio sopra: pessima idea ottenere tutti gli articoli solo per contarli.

dhuyvetter dhuyvetter
28 lug 2017 15:08:55

Tieni presente che ha postato questo nel 2013 prima che WP_Query diventasse popolare.

Jesse Nickles Jesse Nickles
3 feb 2022 12:53:11
1

Dovrebbe funzionare anche così:

$category = get_term('work', 'category');
$posts_in_category = $category->count;
10 nov 2015 11:06:46
Commenti

Questo fallirà se una tassonomia è assegnata a più di un tipo di post e hai bisogno solo del conteggio dei post per un singolo tipo di post

Pieter Goosen Pieter Goosen
10 nov 2015 11:15:45
0

So che questo è un vecchio thread, ma compare per primo su Google, quindi ecco la VERA soluzione su come fare questo.

$term = get_term( $termId, $taxonomy );
$total_in_term = $term->count;

Quindi è necessario passare l'ID del termine e la tassonomia. Questa è la soluzione più leggera e ha anche il vantaggio di funzionare con tassonomie personalizzate.

4 apr 2019 21:01:49
0

Ho trovato questa soluzione mentre cercavo qualcosa di simile, quindi ecco la mia soluzione nel caso possa essere utile a qualcun altro... Nota: la risposta di Harmonic funziona, a seconda dello scenario potrebbe essere più semplice fare invece questo:

$count = get_category($category->term_id)->category_count;

Dove $category è il tuo oggetto di tassonomia.

Nota importante: questo presuppone che nessun altro post_type utilizzi la stessa tassonomia. Dettagli: get_category() è in realtà una funzione wrapper di get_term().

In questo caso, get_term() ha un parametro name__like che get_category() non ha. Probabilmente ci sono anche altre piccole differenze.

Vedi: get_term() get_category

20 ago 2020 06:11:22
0

Fondamentalmente, se lo fai con la soluzione che hai trovato, sprecherai molte risorse del database quando hai molti post da recuperare.

$query = new WP_Query();
echo $query->found_posts();

Tuttavia, WP_Query->found_posts recupera solo 'posts_per_page' ed esegue per te il lavoro di COUNT(*) in MySQL. Quindi ti consiglio di utilizzare quest'ultimo metodo.

25 lug 2014 00:39:57