Căutați o modalitate de a număra toate postările dintr-o categorie și de a le afișa în WordPress? Deși probabil există un plugin pentru asta, am creat un fragment de cod rapid pe care îl puteți folosi pentru a număra toate postările dintr-o categorie în WordPress.
Instrucțiuni:
Tot ce trebuie să faceți este să adăugați acest cod în fișierul functions.php al temei dvs. sau într-un plugin specific site-ului:
function count_cat_post($category) {
if(is_string($category)) {
$catID = get_cat_ID($category);
}
elseif(is_numeric($category)) {
$catID = $category;
} else {
return 0;
}
$cat = get_category($catID);
return $cat->count;
}
Puteți utiliza acest cod pentru a afișa numărul de postări dintr-o categorie oriunde pe site-ul dvs., fie după ID-ul categoriei, fie după numele categoriei:
<?php
// echo count_cat_post('1');
// echo count_cat_post('General');
?>
Pur și simplu eliminați '//' de pe oricare dintre liniile de cod pentru a-l utiliza.
Notă: Dacă aceasta este prima dată când adăugați fragmente de cod în WordPress, consultați ghidul nostru despre cum să adăugați corect fragmente de cod în WordPress, pentru a nu vă defecta accidental site-ul.
Dacă ți-a plăcut acest fragment de cod, te rugăm să iei în considerare și celelalte articole de pe site, cum ar fi: cele mai bune 15 instrumente de marketing de conținut și cum să creezi un formular de contact în WordPress.
Salut,
Cum pot folosi aceeași funcție, dar cu relația 'ȘI'.
vor fi returnate doar postările care au ambele categorii.
Cum putem transmite ID-ul sau numele dinamic?
Puteți transmite o variabilă funcției. De exemplu, ați putea transmite primul ID de categorie returnat de funcția
get_the_category(): https://developer.wordpress.org/reference/functions/get_the_category/Rețineți că acest lucru necesită lucrul cu tablouri și obiecte, deoarece valoarea returnată de
get_the_category()este un tablou de obiecte.De exemplu, ați putea folosi:
$cat = get_the_category();
$cat_id = $cat[0]->cat_ID;//Obține primul id
Cu cea mai recentă versiune de WP, au existat unele erori legate de funcționarea corectă a tuturor acestora din prima, așa că dacă altcineva are probleme:
function count_cat_post($catslug){
$CategoryTerms = get_term_by('slug', $catslug, 'category');
if(!$CategoryTerms){
return 0;
}
return $CategoryTerms->count;
}
Salut Jason,
Mulțumim pentru asta. Cu toate acestea, am reușit să testăm pe WordPress 5.4 și funcționează pentru noi fără erori.
DE ASEMENEA,
folosiți get_the_category deoarece get_category va genera erori cu cele mai recente versiuni de wordpress pe orice element care are postări și va returna 0 pe cele care nu au, cauzând o mică dilemă de depanare.
Nu vedem acest lucru. Ce mesaj de eroare primiți?
de asemenea, este:
return $cat->category_count;
deoarece count este o funcție php.
$cateste un obiectWP_Term, cucountfiind o proprietate publică de tip int.există vreo modalitate de a nu introduce numele sau id-ul categoriei? am atât de multe categorii. nu pot veni la cod și să adaug id-ul sau numele fiecăreia în cod. am nevoie ca wordpress să facă asta automat.
În șablonul dvs. va exista o zonă unde se afișează numele categoriei, probabil există o parte din aceasta care folosește o variabilă egală cu id-ul sau slug-ul categoriei, pe care o puteți folosi în schimb pentru a prelua numărul. Ceva care se termină astfel:
// echo count_cat_post($cat_id);
Ați putea folosi o buclă
forpentru a parcurge categoriile. În acest caz, ați putea dori să utilizațiget_categories(): https://developer.wordpress.org/reference/functions/get_categories/