get_posts() WordPress関数 テンプレートタグ

スポンサードリンク

スポンサードリンク

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()のコード

参照:wp-includes/post.php

<?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 );

}

 

get_posts()を使ったコード例

 実装 

 

 

スポンサードリンク

スポンサードリンク