Description

L'utilisation la plus approprié pour cette fonction est de créer un tableau de postes basés sur le réglages des paramètres. Elle peut être utilisée pour créer une boucle multiple bien que dans ce cas il est préféré d'utiliser directement la class WP_Query;

Les paramètres de get_posts() sont similaires à ceux de get_pages() mais sont implémentés assez différemment et devraient être utilisés pour des scénarios appropriés. get_posts() utilise WP_Query alors que get_pages() exécute directement des requêtes en base de donnée. Chacune a des paramètres qui reflètent cette différence dans l'implémentation.

La fonction query_posts() utilise aussi WP_Query mais n'est pas recommandé parce qu'elle altère directement la boucle principale en changeant les variables de la global $wp_query. D'un autre point de vue, get_posts() créer simplement un nouvel objet WP_Query et ainsi n'affecte pas la boucle principale.

Si vous voulez modifier la requête principale avant qu'elle ne soit exécutée, vous pouvez utiliser le hook 'pre_get_posts'. Si vous voulez juste un tableau de postes basés sur un petit et simple réglage de paramètres à afficher sur une page, get_posts() est la meilleur option.

Paramètre

$args

(array) (Optionnel) Arguments spécifiques à la fonction get_posts().

  • 'numberposts'
    (int) Total de postes à retourner. Pour tous les postes : -1.
    Par défaut : 5
  • 'category'
    (int|string) Id d'une catégorie ou liste d'ids séparés par une virgule.
    Par défaut : 0
  • 'include'
    (array) Tableau d'ids des postes à retourner, les postes mis en avant (sticky) seront inclus.
    Par défaut : array().
  • 'exclude'
    (array) Tableau d'ids de postes à ne pas retourner.
    Par défaut : array().
  • 'suppress_filters'
    (array) True pour activer les filtres de suppression.
    Par défaut : true.

Pour voir la liste complète des arguments disponibles : WP_Query::parse_query().

Valeur par défaut : null

Retourne

(WP_Post[] | int[]) Tableau d'objets ou d'ids de postes.

Structure de la fonction get_posts()

Définie dans le fichier wp-includes/post.php à la ligne 2111 :

function get_posts( $args = null ) {
    $defaults = array(
        'numberposts'      => 5,
        'category'         => 0,
        'orderby'          => 'date',
        'order'            => 'DESC',
        'include'          => array(),
        'exclude'          => array(),
        'meta_key'         => '',
        'meta_value'       => '',
        'post_type'        => 'post',
        'suppress_filters' => true,
    );

    $parsed_args = wp_parse_args( $args, $defaults );
    if ( empty( $parsed_args['post_status'] ) ) {
        $parsed_args['post_status'] = ( 'attachment' === $parsed_args['post_type'] ) ? 'inherit' : 'publish';
    }
    if ( ! empty( $parsed_args['numberposts'] ) && empty( $parsed_args['posts_per_page'] ) ) {
        $parsed_args['posts_per_page'] = $parsed_args['numberposts'];
    }
    if ( ! empty( $parsed_args['category'] ) ) {
        $parsed_args['cat'] = $parsed_args['category'];
    }
    if ( ! empty( $parsed_args['include'] ) ) {
        $incposts                      = wp_parse_id_list( $parsed_args['include'] );
        $parsed_args['posts_per_page'] = count( $incposts );  // Only the number of posts included.
        $parsed_args['post__in']       = $incposts;
    } elseif ( ! empty( $parsed_args['exclude'] ) ) {
        $parsed_args['post__not_in'] = wp_parse_id_list( $parsed_args['exclude'] );
    }

    $parsed_args['ignore_sticky_posts'] = true;
    $parsed_args['no_found_rows']       = true;

    $get_posts = new WP_Query;
    return $get_posts->query( $parsed_args );

}

Fonctions utilisées par get_posts()

wp_parse_args()

Fusionne des arguments définis par l'utilisateur dans un tableau par défaut.

wp_parse_id_list()

Nettoie un tableau ou une liste d'ids séparés par des virgules et/ou espaces.

Où trouver la fonction get_posts() dans le CMS Wordpress

Exemples

Obtenir les 10 derniers postes :
$args = array(
  'numberposts' => 10
);
 
$latest_posts = get_posts( $args );
Obtenir un tableau d'ids de postes :
$args = array(
  'fields' => 'ids'
);
$posts = get_posts($args);

Sources

Codex Wordpress : get_posts()

Autres fonctions dans le même fichier : wp-includes/post.php

Retour