概要
setup_postdata
関数は、WordPress のループ内で使用され、指定した投稿に関連するグローバル変数を設定するための関数です。この関数を使用することで、特定の投稿情報(タイトル、コンテンツ、投稿者など)に簡単にアクセスできるようになります。以下は、この関数がよく使われる機能の例です:
- 投稿タイトルを取得する
- 投稿のパーマリンクを作成する
- 投稿の内容を表示する
- 投稿のメタデータを利用する(例:著者、日付)
- カスタムフィールドからデータを取得する
- 投稿のサムネイルを表示する
- 投稿カテゴリーやタグにアクセスする
- 条件付きで他のテンプレートを読み込む
構文
void setup_postdata( WP_Post $post )
パラメータ
$post
(WP_Post) : グローバル投稿オブジェクトの代わりに設定する投稿オブジェクト。
戻り値
- なし。この関数は、指定した投稿に関連するグローバル変数を設定します。
関連する関数
使用可能なバージョン
- WordPress 2.5 以降
コアファイルのパス
- wp-includes/post.php
この関数のアクションでの使用可能性
アクション | 使用可能性 |
---|---|
mu_plugin_loaded | |
registered_post_type | |
plugins_loaded | |
wp_roles_init | |
setup_theme | |
after_setup_theme | |
set_current_user | |
init | |
register_sidebar | |
wp_loaded | |
send_headers | |
parse_query | |
pre_get_posts | |
wp | 〇 |
template_redirect | |
get_header | |
wp_head |
サンプルコード
サンプルコード1:基本的な使用法
このサンプルコードは、カスタムクエリで取得した投稿データをループし、setup_postdata
を使用してそれぞれの投稿タイトルを表示します。
$custom_query = new WP_Query( array( 'post_type' => 'post', 'posts_per_page' => 5 ) );
if ( $custom_query->have_posts() ) {
while ( $custom_query->have_posts() ) {
$custom_query->the_post();
echo get_the_title();
}
wp_reset_postdata();
}
(出典:https://developer.wordpress.org/reference/functions/setup_postdata/)
サンプルコード2:投稿のコンテンツを表示
このコードでは、投稿の本文を取得し表示します。
$posts = get_posts( array( 'numberposts' => 5 ) );
foreach ( $posts as $post ) {
setup_postdata( $post );
the_content();
}
wp_reset_postdata();
(出典:https://developer.wordpress.org/reference/functions/setup_postdata/)
サンプルコード3:投稿のサムネイルを表示
このサンプルは、各投稿に関連するサムネイルを表示する方法です。
$recent_posts = wp_get_recent_posts( array( 'numberposts' => 5 ) );
foreach ( $recent_posts as $post ) {
setup_postdata( $post );
if ( has_post_thumbnail() ) {
the_post_thumbnail();
}
}
wp_reset_postdata();
(出典:https://developer.wordpress.org/reference/functions/setup_postdata/)
サンプルコード4:カスタムフィールドの取得
カスタムフィールドからデータを取得して表示するサンプルです。
$custom_posts = new WP_Query( array( 'post_type' => 'custom_type' ) );
if ( $custom_posts->have_posts() ) {
while ( $custom_posts->have_posts() ) {
$custom_posts->the_post();
$custom_field_value = get_post_meta( get_the_ID(), 'custom_field', true );
echo $custom_field_value;
}
wp_reset_postdata();
}
(出典:https://developer.wordpress.org/reference/functions/setup_postdata/)
サンプルコード5:条件付きで異なるテンプレートを表示
このコードは、異なる条件に基づいてテンプレートを選択する例です。
$my_query = new WP_Query( array( 'category_name' => 'news' ) );
if ( $my_query->have_posts() ) {
while ( $my_query->have_posts() ) {
$my_query->the_post();
if ( in_category( 'special' ) ) {
get_template_part( 'template-parts/content', 'special' );
} else {
get_template_part( 'template-parts/content', 'default' );
}
}
wp_reset_postdata();
}
(出典:https://developer.wordpress.org/reference/functions/setup_postdata/)