Numărarea postărilor dintr-un tip de postare personalizat și taxonomie și termeni specifici?

4 mar. 2013, 04:49:59
Vizualizări: 62.3K
Voturi: 9

Încerc să număr câte postări există în tipul de postare personalizat numit "videos", dar doar cele din categoria numită "work".

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

Cum pot ajusta codul de mai sus pentru a realiza acest lucru?

Mulțumesc!

0
Toate răspunsurile la întrebare 7
1

O soluție alternativă folosind WP_Query ar fi:

$args = array(
  'cat' => 4, // ID-ul categoriei
  'post_type' => 'videos' // tipul postării
);
$the_query = new WP_Query( $args );
echo $the_query->found_posts; // afișează numărul total de postări găsite
2 mar. 2014 23:53:48
Comentarii

Tipurile personalizate de postări folosesc taxonomii, nu "categorii", deci aceasta este o eroare.

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

Pentru o taxonomie personalizată specifică, încercați:

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

Documentația la https://codex.wordpress.org/Class_Reference/WP_Query#Taxonomy_Parameters

26 aug. 2015 14:30:32
Comentarii

Asigurați-vă că schimbați în echo $count = $the_query->found_posts; dacă doriți să afișați rezultatul real în interfața frontală.

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

Acesta ar trebui să fie răspunsul acceptat (sau cel mai votat).

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

Am găsit o soluție.

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

Ideea foarte proastă. Ce faci dacă ai 15.000 de articole? Le încarci PE TOATE în memorie? Acestea sunt genul de concepții greșite care pot distruge un site de producție.

Cranio Cranio
4 mar. 2016 17:12:05

După cum menționează @Cranio mai sus: idee groaznică să obții toate articolele doar ca să le numeri.

dhuyvetter dhuyvetter
28 iul. 2017 15:08:55

Ține cont că a postat asta în 2013, înainte ca WP_Query să devină popular.

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

Aceasta ar trebui să funcționeze și:

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

Aceasta va eșua dacă o taxonomie este atribuită la mai multe tipuri de postări și ai nevoie doar de numărul de postări pentru un singur tip de postare

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

Știu că acesta este un subiect vechi, dar apare primul în Google, așa că iată adevărata soluție pentru cum să faci asta.

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

Deci trebuie să transmiți ID-ul termenului și taxonomia. Aceasta este cea mai ușoară soluție și are avantajul că funcționează și cu taxonomii personalizate.

4 apr. 2019 21:01:49
0

Am găsit acest lucru în timp ce cercetam ceva similar și iată soluția mea în caz că este utilă pentru altcineva... Notă: Răspunsul lui Harmonic funcționează, dar în funcție de scenariu poate fi mai ușor să faceți asta:

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

Unde $category este obiectul tău de taxonomie.

Notă importantă aici fiind că aceasta presupune că niciun alt post_type nu folosește aceeași taxonomie. Detalii: get_category() este de fapt o funcție wrapper pentru get_term().

În acest caz, get_term() are un parametru name__like pe care get_category() nu îl are. Probabil sunt și alte mici diferențe.

Vezi: get_term() get_category

20 aug. 2020 06:11:22
0

În esență, dacă folosești soluția pe care ai găsit-o, vei consuma destul de multe resurse din baza de date atunci când ai multe articole de preluat.

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

Totuși, WP_Query->found_posts preia doar 'posts_per_page' și face pentru tine operația COUNT(*) în MySQL. Așadar, îți recomand să folosești această din urmă variantă.

25 iul. 2014 00:39:57