Recupera un array di pagine (o di elementi gerarchici di tipo post).

Parametri

$args

(array|stringa)(opzionale)Array o stringa di argomenti per recuperare le pagine.

  • 'figlio_di'
    (int) ID della pagina di cui restituire le pagine figlio e nipote. Nota: Il valore di $hierarchical non influisce sul fatto che $child_of restituisca risultati gerarchici. Valore predefinito 0, ovvero nessuna restrizione.
  • 'ordine_di_ordine'
    (stringa) Come ordinare le pagine recuperate. Accetta 'ASC', 'DESC'. Predefinito 'ASC'.
  • 'ordina_colonna'
    (stringa) Per quali colonne ordinare le pagine, separate da virgole. Accetta 'post_author', 'post_date', 'post_title', 'post_name', 'post_modified', 'menu_order', 'post_modified_gmt', 'post_parent', 'ID', 'rand', 'comment*count'. 'post*' può essere omesso per tutti i valori che iniziano con esso. Valore predefinito 'post_title'.
  • 'gerarchico'
    (bool) Se restituire le pagine in modo gerarchico. Se false, in combinazione con $child_of anch'esso falso, entrambi gli argomenti saranno ignorati. Predefinito true.
  • 'escludere'
    (int[]) Array di ID pagina da escludere.
  • 'include'
    (int[]) Array di ID di pagina da includere. Non può essere usato con $child_of, $parent, $exclude, $meta_key, $meta_value, o $hierarchical.
  • 'meta_chiave'
    (stringa) Include solo le pagine con questa meta-chiave.
  • 'meta_valore'
    (stringa) Include solo le pagine con questo valore meta. Richiede $meta_key.
  • 'autori'
    (stringa) Un elenco separato da virgole di ID di autori.
  • 'genitore'
    (int) ID della pagina di cui restituire i figli diretti. Valore predefinito -1, ovvero nessuna restrizione.
  • 'albero_escluso'
    (stringa|int[]) Stringa o matrice separata da virgole di ID di pagina da escludere.
  • 'numero'
    (int) Il numero di pagine da restituire. Valore predefinito 0, ovvero tutte le pagine.
  • 'offset'
    (int) Il numero di pagine da saltare prima di tornare indietro. Richiede $number. Predefinito 0.
  • 'tipo_post'
    (stringa) Il tipo di post da interrogare. Predefinito 'page'.
  • 'post_status'
    (stringa|array) Un elenco o un array separato da virgole di stati dei post da includere. Predefinito 'publish'.

Valore predefinito: array()

Ritorno

(WP_Post[]|int[]|false) Array di pagine (o di elementi gerarchici del tipo di post). Booleano false se il tipo di post specificato non è gerarchico o se lo stato specificato non è supportato dal tipo di post.

Fonte

File: wp-includes/post.php

functionget_pages($args=array()){global$wpdb;$defaults=array('child_of'=>0,'sort_order'=>'ASC','sort_column'=>'post_title','hierarchical'=>1,'exclude'=>array(),'include'=>array(),'meta_key'=>'','meta_value'=>'','authors'=>'','parent'=>-1,'exclude_tree'=>array(),'number'=>'','offset'=>0,'post_type'=>'page','post_status'=>'publish',);$parsed_args=wp_parse_args($args,$defaults);$number=(int)$parsed_args['number'];$offset=(int)$parsed_args['offset'];$child_of=(int)$parsed_args['child_of'];$hierarchical=$parsed_args['hierarchical'];$exclude=$parsed_args['exclude'];$meta_key=$parsed_args['meta_key'];$meta_value=$parsed_args['meta_value'];$parent=$parsed_args['parent'];$post_status=$parsed_args['post_status'];// Make sure the post type is hierarchical.$hierarchical_post_types=get_post_types(array('hierarchical'=>true));if(!in_array($parsed_args['post_type'],$hierarchical_post_types,true)){returnfalse;}if($parent>0&&!$child_of){$hierarchical=false;}// Make sure we have a valid post status.if(!is_array($post_status)){$post_status=explode(',',$post_status);}if(array_diff($post_status,get_post_stati())){returnfalse;}// $args can be whatever, only use the args defined in defaults to compute the key.$key=md5(serialize(wp_array_slice_assoc($parsed_args,array_keys($defaults))));$last_changed=wp_cache_get_last_changed('posts');$cache_key="get_pages:$key:$last_changed";$cache=wp_cache_get($cache_key,'posts');if(false!==$cache){// Convert to WP_Post instances.$pages=array_map('get_post',$cache);/** This filter is documented in wp-includes/post.php */$pages=apply_filters('get_pages',$pages,$parsed_args);return$pages;}$inclusions='';if(!empty($parsed_args['include'])){$child_of=0;// Ignore child_of, parent, exclude, meta_key, and meta_value params if using include.$parent=-1;$exclude='';$meta_key='';$meta_value='';$hierarchical=false;$incpages=wp_parse_id_list($parsed_args['include']);if(!empty($incpages)){$inclusions=' AND ID IN ('.implode(',',$incpages).')';}}$exclusions='';if(!empty($exclude)){$expages=wp_parse_id_list($exclude);if(!empty($expages)){$exclusions=' AND ID NOT IN ('.implode(',',$expages).')';}}$author_query='';if(!empty($parsed_args['authors'])){$post_authors=wp_parse_list($parsed_args['authors']);if(!empty($post_authors)){foreach($post_authorsas$post_author){// Do we have an author id or an author login?if(0==(int)$post_author){$post_author=get_user_by('login',$post_author);if(empty($post_author)){continue;}if(empty($post_author->ID)){continue;}$post_author=$post_author->ID;}if(''===$author_query){$author_query=$wpdb->prepare(' post_author = %d ',$post_author);}else{$author_query.=$wpdb->prepare(' OR post_author = %d ',$post_author);}}if(''!==$author_query){$author_query=" AND ($author_query)";}}}$join='';$where="$exclusions$inclusions ";if(''!==$meta_key||''!==$meta_value){$join=" LEFT JOIN $wpdb->postmeta ON ( $wpdb->posts.ID = $wpdb->postmeta.post_id )";// meta_key and meta_value might be slashed.$meta_key=wp_unslash($meta_key);$meta_value=wp_unslash($meta_value);if(''!==$meta_key){$where.=$wpdb->prepare(" AND $wpdb->postmeta.meta_key = %s",$meta_key);}if(''!==$meta_value){$where.=$wpdb->prepare(" AND $wpdb->postmeta.meta_value = %s",$meta_value);}}if(is_array($parent)){$post_parent__in=implode(',',array_map('absint',(array)$parent));if(!empty($post_parent__in)){$where.=" AND post_parent IN ($post_parent__in)";}}elseif($parent>=0){$where.=$wpdb->prepare(' AND post_parent = %d ',$parent);}if(1===count($post_status)){$where_post_type=$wpdb->prepare('post_type = %s AND post_status = %s',$parsed_args['post_type'],reset($post_status));}else{$post_status=implode("', '",$post_status);$where_post_type=$wpdb->prepare("post_type = %s AND post_status IN ('$post_status')",$parsed_args['post_type']);}$orderby_array=array();$allowed_keys=array('author','post_author','date','post_date','title','post_title','name','post_name','modified','post_modified','modified_gmt','post_modified_gmt','menu_order','parent','post_parent','ID','rand','comment_count',);foreach(explode(',',$parsed_args['sort_column'])as$orderby){$orderby=trim($orderby);if(!in_array($orderby,$allowed_keys,true)){continue;}switch($orderby){case'menu_order':break;case'ID':$orderby="$wpdb->posts.ID";break;case'rand':$orderby='RAND()';break;case'comment_count':$orderby="$wpdb->posts.comment_count";break;default:if(0===strpos($orderby,'post_')){$orderby="$wpdb->posts.".$orderby;}else{$orderby="$wpdb->posts.post_".$orderby;}}$orderby_array[]=$orderby;}$sort_column=!empty($orderby_array)?implode(',',$orderby_array):"$wpdb->posts.post_title";$sort_order=strtoupper($parsed_args['sort_order']);if(''!==$sort_order&&!in_array($sort_order,array('ASC','DESC'),true)){$sort_order='ASC';}$query="SELECT * FROM $wpdb->posts$join WHERE ($where_post_type) $where ";$query.=$author_query;$query.=' ORDER BY '.$sort_column.' '.$sort_order;if(!empty($number)){$query.=' LIMIT '.$offset.','.$number;}$pages=$wpdb->get_results($query);if(empty($pages)){wp_cache_set($cache_key,array(),'posts');/** This filter is documented in wp-includes/post.php */$pages=apply_filters('get_pages',array(),$parsed_args);return$pages;}// Sanitize before caching so it'll only get done once.$num_pages=count($pages);for($i=0;$i<$num_pages;$i++){$pages[$i]=sanitize_post($pages[$i],'raw');}// Update cache.update_post_cache($pages);if($child_of||$hierarchical){$pages=get_page_children($child_of,$pages);}if(!empty($parsed_args['exclude_tree'])){$exclude=wp_parse_id_list($parsed_args['exclude_tree']);foreach($excludeas$id){$children=get_page_children($id,$pages);foreach($childrenas$child){$exclude[]=$child->ID;}}$num_pages=count($pages);for($i=0;$i<$num_pages;$i++){if(in_array($pages[$i]->ID,$exclude,true)){unset($pages[$i]);}}}$page_structure=array();foreach($pagesas$page){$page_structure[]=$page->ID;}wp_cache_set($cache_key,$page_structure,'posts');// Convert to WP_Post instances.$pages=array_map('get_post',$pages);/**
	 * Filters the retrieved list of pages.
	 *
	 * @since 2.1.0
	 *
	 * @param WP_Post[] $pages       Array of page objects.
	 * @param array     $parsed_args Array of get_pages() arguments.
	 */returnapply_filters('get_pages',$pages,$parsed_args);}

Correlato

Utilizzi

Usi Descrizione
wp-includes/functions.php: wp_parse_list()

Converte un elenco di valori scalari separati da virgole o spazi in un array.

wp-includes/functions.php: wp_cache_get_last_changed()

Ottiene la data dell'ultima modifica per il gruppo di cache specificato.

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/formatting.php: wp_unslash()

Rimuove gli slash da una stringa o rimuove ricorsivamente gli slash dalle stringhe all'interno di un array.

wp-includes/pluggable.php: get_user_by()

Recupera le informazioni sull'utente in base a un determinato campo

wp-includes/functions.php: wp_parse_args()

Unisce i parametri definiti dall'utente nell'array dei valori predefiniti.

wp-includes/functions.php: wp_array_slice_assoc()

Estrae una fetta di un array, dato un elenco di chiavi.

wp-includes/functions.php: wp_parse_id_list()

Pulisce un array, un elenco di ID separati da virgole o spazi.

wp-includes/plugin.php: applica_filtri()

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

wp-includes/post.php: update_post_cache()

Aggiorna i post nella cache.

wp-includes/post.php: get_page_children()

Identifica i discendenti di un dato ID di pagina in un elenco di oggetti pagina.

wp-includes/post.php: get_pages

Filtra l'elenco delle pagine recuperate.

wp-includes/post.php: sanitize_post()

Sanifica ogni campo del post.

wp-includes/post.php: get_post_types()

Ottiene un elenco di tutti gli oggetti di tipo post registrati.

wp-includes/post.php: get_post_stati()

Ottiene un elenco di stati dei post.

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-includes/class-wp-customize-manager.php: WP_Customize_Manager::has_published_pages()

Restituisce se ci sono pagine pubblicate.

wp-admin/includes/class-wp-posts-list-table.php: WP_Posts_List_Table::_display_rows_hierarchical()
wp-includes/post-template.php: wp_dropdown_pages()

Recupera o visualizza un elenco di pagine come un elenco a discesa (select list).

wp-includes/post-template.php: wp_list_pages()

Recupera o visualizza un elenco di pagine (o di elementi gerarchici del tipo di post) in formato elenco (li).

wp-includes/post-template.php: get_body_class()

Recupera un array di nomi di classi per l'elemento body.

Changelog

Versione Descrizione
1.5.0 Introdotto.