Récupère un tableau de pages (ou d'éléments de type post hiérarchique).

Paramètres

$args

(tableau|chaîne de caractères)(Facultatif)Tableau ou chaîne d'arguments pour récupérer les pages.

  • 'enfant_de'
    (int) ID de la page pour retourner les pages enfants et petits-enfants de. Remarque : la valeur de $hierarchical n'a aucune incidence sur le fait que $child_of renvoie des résultats hiérarchiques. Par défaut 0, ou aucune restriction.
  • Ordre de tri
    (chaîne de caractères) Comment trier les pages récupérées. Accepte 'ASC', 'DESC'. Par défaut, 'ASC'.
  • 'sort_column'.
    (chaîne de caractères) Quelles colonnes pour trier les pages par, séparées par des virgules. Accepte 'post_author', 'post_date', 'post_title', 'post_name', 'post_modified', 'menu_order', 'post_modified_gmt', 'post_parent', 'ID', 'rand', 'comment*count'. 'post*' peut être omis pour toutes les valeurs qui commencent par lui. Par défaut, 'post_title'.
  • 'hiérarchique'.
    (bool) Indique si les pages doivent être retournées de manière hiérarchique. Si false en conjonction avec $child_of étant également false, les deux arguments ne seront pas pris en compte. Par défaut, true.
  • exclure
    (int[]) Tableau d'identifiants de pages à exclure.
  • 'inclure'
    (int[]) Tableau d'identifiants de pages à inclure. Ne peut être utilisé avec $child_of, $parent, $exclude, $meta_key, $meta_valueou $hierarchical.
  • clé méta
    (chaîne de caractères) N'inclure que les pages avec cette clé méta.
  • 'meta_value' (chaîne de caractères)
    (chaîne de caractères) N'inclure que les pages avec cette valeur méta. Nécessite $meta_key.
  • 'auteurs'
    (chaîne de caractères) Une liste d'identifiants d'auteurs séparés par des virgules.
  • "parent
    (int) ID de la page pour retourner les enfants directs de. Par défaut -1, ou aucune restriction.
  • exclude_tree'
    (chaîne|int[]) Chaîne ou tableau d'identifiants de pages à exclure, séparés par des virgules.
  • nombre
    (int) Le nombre de pages à retourner. Par défaut 0, ou toutes les pages.
  • offset
    (int) Le nombre de pages à sauter avant de revenir. Nécessite $number. Par défaut 0.
  • post_type
    (chaîne de caractères) Le type de post à interroger. Par défaut, 'page'.
  • 'post_status' (chaîne de caractères)
    (string|array) Une liste ou un tableau séparé par des virgules des statuts de post à inclure. Par défaut, 'publish'.

Valeur par défaut : array()

Retourner

(WP_Post[]|int[]|false) Tableau de pages (ou d'éléments de type de post hiérarchique). Booléen false si le type de post spécifié n'est pas hiérarchique ou si le statut spécifié n'est pas supporté par le type de post.

Source

Fichier : 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);}

Related

Utilise

Utilisations Description
wp-includes/functions.php : wp_parse_list()

Convertit une liste de valeurs scalaires séparées par des virgules ou des espaces en un tableau.

wp-includes/functions.php : wp_cache_get_last_changed()

Obtient la date de dernière modification pour le groupe de cache spécifié.

wp-includes/cache.php : wp_cache_get()

Récupère le contenu du cache par clé et par groupe.

wp-includes/cache.php : wp_cache_set()

Sauvegarde les données dans le cache.

wp-includes/formatting.php : wp_unslash()

Supprime les barres obliques d'une chaîne de caractères ou supprime récursivement les barres obliques des chaînes de caractères dans un tableau.

wp-includes/pluggable.php : get_user_by()

Récupérer les infos utilisateur par un champ donné.

wp-includes/functions.php : wp_parse_args()

Fusionne les arguments définis par l'utilisateur dans le tableau defaults.

wp-includes/functions.php : wp_array_slice_assoc()

Extrait une tranche d'un tableau, étant donné une liste de clés.

wp-includes/functions.php : wp_parse_id_list()

Nettoie un tableau, une liste d'identifiants séparés par des virgules ou des espaces.

wp-includes/plugin.php : apply_filters()

Appelle les fonctions de rappel qui ont été ajoutées à un crochet de filtre.

wp-includes/post.php : update_post_cache()

Mise à jour des posts dans le cache.

wp-includes/post.php : get_page_children()

Identifie les descendants d'un ID de page donné dans une liste d'objets page.

wp-includes/post.php : get_pages

Filtre la liste des pages récupérées.

wp-includes/post.php : sanitize_post()

Assainit chaque champ de post.

wp-includes/post.php : get_post_types()

Récupère une liste de tous les objets de type de post enregistrés.

wp-includes/post.php : get_post_stati()

Récupère une liste de statuts de post.

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

Récupère un ensemble de résultats SQL entier de la base de données (c'est-à-dire de nombreuses lignes).

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

Prépare une requête SQL pour une exécution sûre.

Utilisé par

Utilisé par Description
wp-includes/class-wp-customize-manager.php : WP_Customize_Manager::has_published_pages()

Retourne s'il y a des pages publiées.

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

Récupère ou affiche une liste de pages sous forme de liste déroulante (liste de sélection).

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

Récupère ou affiche une liste de pages (ou d'éléments hiérarchiques de type post) au format liste (li).

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

Récupère un tableau des noms de classe pour l'élément body.

Changelog

Version Description
1.5.0 Introduit.