get_posts()
参照:WordPress Codex-get_posts()
構文
get_posts($args[オプション])
get_posts()の詳細
動 作
複数の投稿データを取得し、複数のWP_Postオブジェクトを要素とした配列を返す。
単数の投稿データの場合→get_post()
返り値
複数のWP_Postオブジェクトをリストにして返す。
Array(
[0] => WP_Post Object(
[ID] => 1
[post_author] => 1
…………………………….省略……………………….
)
[1] => WP_Post Object(
[ID] => 2
[post_author] => 2
…………………………….省略……………………….
)
[3] => WP_Post Object(
[ID] => 3
[post_author] => 3
…………………………….省略……………………….
)
)
引 数
キー | デフォルトの値 | 概要 |
---|---|---|
‘posts_pre_page’
(numberposts) |
5 | 取得する件数 |
‘offset’ | 0 | 取得するデータの開始時の番号 |
‘category’ | ” | カテゴリーID |
‘category_name’ | ” | 文字列のカテゴリー名 |
‘orderby’ | ‘date’ | (文字列)[オプション] 並び順 |
‘order’ | ‘DESC’ | 順番方法 |
‘include’ | ” | 含める投稿ID |
‘exclude’ | ” | 含めたくない投稿ID |
‘meta_key’ | ” | カスタムフィールド名 |
‘meta_value’ | ” | カスタムフィールドの値 |
‘post_type’ | ‘post’ | 投稿タイプ |
‘post_mine_type’ | ” | (文字列/配列) mine typesの一覧又はコンマ区切り |
‘post_parent’ | ” | 親の投稿ID |
‘author’ | ” | 投稿者ID |
‘post_status’ | ‘publish’ | 投稿ステータス |
‘supperee_filters’ | true | フィルター処理なしture フィルター処理ありfalse |
get_posts()のコード
<?php /** * Retrieves an array of the latest posts, or posts matching the given criteria. * * The defaults are as follows: * * @since 1.2.0 * * @see WP_Query::parse_query() * * @param array $args { * Optional. Arguments to retrieve posts. See WP_Query::parse_query() for all * available arguments. * * @type int $numberposts Total number of posts to retrieve. Is an alias of $posts_per_page * in WP_Query. Accepts -1 for all. Default 5. * @type int|string $category Category ID or comma-separated list of IDs (this or any children). * Is an alias of $cat in WP_Query. Default 0. * @type array $include An array of post IDs to retrieve, sticky posts will be included. * Is an alias of $post__in in WP_Query. Default empty array. * @type array $exclude An array of post IDs not to retrieve. Default empty array. * @type bool $suppress_filters Whether to suppress filters. Default true. * } * @return WP_Post[]|int[] Array of post objects or post IDs. */ 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 ); }