Stai cercando un modo per contare tutti i post per categoria e visualizzarli in WordPress? Sebbene probabilmente esista un plugin per questo, abbiamo creato un rapido snippet di codice che puoi utilizzare per contare tutti i post di una categoria in WordPress.
Istruzioni:
Tutto quello che devi fare è aggiungere questo codice al file functions.php del tuo tema o in un plugin specifico per il sito:
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;
}
Puoi usare questo codice per visualizzare il conteggio dei post da una categoria ovunque sul tuo sito web, tramite ID o nome della categoria:
<?php
// echo count_cat_post('1');
// echo count_cat_post('General');
?>
Rimuovi semplicemente '//' da una qualsiasi delle righe di codice per utilizzarla.
Nota: Se questa è la prima volta che aggiungi snippet di codice in WordPress, consulta la nostra guida su come aggiungere correttamente snippet di codice in WordPress, in modo da non compromettere accidentalmente il tuo sito.
Se ti è piaciuto questo snippet di codice, prendi in considerazione la lettura dei nostri altri articoli sul sito come: 15 migliori strumenti di content marketing e come creare un modulo di contatto in WordPress.
Ciao,
Come posso usare la stessa funzione ma con la relazione 'E'.
verranno restituiti solo i post che hanno entrambe le categorie.
Come possiamo passare l'ID o il nome dinamicamente?
Puoi passare una variabile alla funzione. Ad esempio, potresti passare l'ID della prima categoria restituita dalla funzione
get_the_category(): https://developer.wordpress.org/reference/functions/get_the_category/Nota che questo richiede di lavorare con array e oggetti, poiché il valore restituito da
get_the_category()è un array di oggetti.Ad esempio, potresti usare:
$cat = get_the_category();
$cat_id = $cat[0]->cat_ID;//Ottiene il primo ID
Con l'ultima versione di WP, ci sono stati alcuni bug che hanno impedito il corretto funzionamento di tutto, quindi se qualcun altro ha problemi:
function count_cat_post($catslug){
$CategoryTerms = get_term_by('slug', $catslug, 'category');
if(!$CategoryTerms){
return 0;
}
return $CategoryTerms->count;
}
Ciao Jason,
Grazie per questo. Tuttavia, siamo stati in grado di testare su WordPress 5.4 e funziona per noi senza errori.
ANCHE,
usa get_the_category poiché get_category darà errore con le ultime versioni di wordpress su qualsiasi cosa che abbia post e restituirà 0 su quelli che non ne hanno, causando un piccolo rompicapo di risoluzione dei problemi.
Non stiamo riscontrando questo problema. Qual è il messaggio di errore che stai ricevendo?
anche:
restituisci $cat->category_count;
poiché count è una funzione php.
$catè un oggettoWP_Term, concountche è una proprietà int pubblica.c'è un modo per non inserire il nome o l'ID della categoria? ho così tante categorie. non posso venire al codice e aggiungere l'ID o il nome di ciascuna nel codice. ho bisogno che WordPress lo faccia automaticamente.
Nel tuo template ci sarà un'area in cui viene visualizzato il nome della categoria, è probabile che ci sia una parte che utilizza una variabile uguale all'ID o allo slug della categoria, che puoi usare invece per recuperare il conteggio. Qualcosa che finisce così:
// echo count_cat_post($cat_id);
Potresti usare un ciclo
forper scorrere le categorie. Potresti voler usareget_categories()in questo caso: https://developer.wordpress.org/reference/functions/get_categories/