Conta il numero di post di un tipo di post e se l'utente ha i permessi per visualizzarli.

Descrizione

Questa funzione fornisce un metodo efficiente per trovare la quantità di post di un blog. Un altro metodo consiste nel contare la quantità di elementi in get_posts(), ma questo metodo comporta un notevole overhead. Pertanto, quando si sviluppa per la versione 2.5+, utilizzare questa funzione.

Il parametro $perm controlla il valore 'readable' e se l'utente può leggere i post privati, lo mostrerà per l'utente che ha effettuato l'accesso.

Parametri

$tipo

(stringa)(Opzionale) Tipo di post per recuperare il conteggio.

Valore predefinito: "post".

$perm

(stringa)(Opzionale) 'leggibile' o vuoto.

Valore predefinito: ''

Ritorno

(oggetto) Numero di messaggi per ogni stato.

Fonte

File: wp-includes/post.php

functionwp_count_posts($type='post',$perm=''){global$wpdb;if(!post_type_exists($type)){returnnewstdClass;}$cache_key=_count_posts_cache_key($type,$perm);$counts=wp_cache_get($cache_key,'counts');if(false!==$counts){// We may have cached this before every status was registered.foreach(get_post_stati()as$status){if(!isset($counts->{$status})){$counts->{$status}=0;}}/** This filter is documented in wp-includes/post.php */returnapply_filters('wp_count_posts',$counts,$type,$perm);}$query="SELECT post_status, COUNT( * ) AS num_posts FROM {$wpdb->posts} WHERE post_type = %s";if('readable'===$perm&&is_user_logged_in()){$post_type_object=get_post_type_object($type);if(!current_user_can($post_type_object->cap->read_private_posts)){$query.=$wpdb->prepare(" AND (post_status != 'private' OR ( post_author = %d AND post_status = 'private' ))",get_current_user_id());}}$query.=' GROUP BY post_status';$results=(array)$wpdb->get_results($wpdb->prepare($query,$type),ARRAY_A);$counts=array_fill_keys(get_post_stati(),0);foreach($resultsas$row){$counts[$row['post_status']]=$row['num_posts'];}$counts=(object)$counts;wp_cache_set($cache_key,$counts,'counts');/**
	 * Modify returned post counts by status for the current post type.
	 *
	 * @since 3.7.0
	 *
	 * @param object $counts An object containing the current post_type's post
	 *                       counts by status.
	 * @param string $type   Post type.
	 * @param string $perm   The permission to determine if the posts are 'readable'
	 *                       by the current user.
	 */returnapply_filters('wp_count_posts',$counts,$type,$perm);}

Correlato

Utilizzi

Usi Descrizione
wp-includes/capabilities.php: current_user_can()

Restituisce se l'utente corrente ha la capacità specificata.

wp-includes/cache.php: wp_cache_get()

Recupera il contenuto della cache per chiave e gruppo.

wp-includes/cache.php: wp_cache_set()

Salva i dati nella cache.

wp-includes/pluggable.php: is_user_logged_in()

Determina se il visitatore corrente è un utente connesso.

wp-includes/plugin.php: applica_filtri()

Richiama le funzioni di callback che sono state aggiunte a un gancio per filtri.

wp-includes/user.php: get_current_user_id()

Ottiene l'ID dell'utente corrente

wp-includes/post.php: _count_posts_cache_key()

Restituisce la chiave di cache per wp_count_posts() in base agli argomenti passati.

wp-includes/post.php: wp_count_posts

Modifica il conteggio dei post restituiti in base allo stato per il tipo di post corrente.

wp-includes/post.php: post_type_exists()

Determina se un tipo di post è registrato.

wp-includes/post.php: get_post_stati()

Ottiene un elenco di stati dei post.

wp-includes/post.php: get_post_type_object()

Recupera un oggetto di tipo post per nome.

wp-includes/wp-db.php: wpdb::get_results()

Recupera un intero insieme di risultati SQL dal database (cioè molte righe).

wp-includes/wp-db.php: wpdb::prepare()

Prepara una query SQL per un'esecuzione sicura.

Utilizzato da

Usato da Descrizione
wp-admin/includes/dashboard.php: wp_dashboard_right_now()

Widget della dashboard che mostra alcune statistiche di base sul sito.

wp-admin/includes/post.php: get_available_post_statuses()

Ottenere tutti gli stati possibili per un tipo di post

wp-admin/includes/class-wp-posts-list-table.php: WP_Posts_List_Table::get_views()
wp-admin/includes/class-wp-posts-list-table.php: WP_Posts_List_Table::prepare_items()

Changelog

Versione Descrizione
2.5.0 Introdotto.