概要
have_posts
関数は、WordPressのループ処理で次の投稿データがあるか調べるために使用されます。この関数は、主に以下のような機能を実装する際に活用されます。
- 投稿リストの表示
- 任意のカスタム投稿タイプの一覧表示
- ページネーション機能の実装
- 特定の条件に合致する投稿の絞り込み
- 投稿のメタデータを表示する際のループ処理
- 固定ページやカテゴリーページのカスタム表示
- ショートコード内での投稿表示
- ウィジェットでの投稿表示
構文
have_posts();
パラメータ
have_posts
関数には、パラメータはありません。
戻り値
この関数は、次の投稿が存在する場合に true
を、そうでない場合に false
を返します。
関連する関数
使用可能なバージョン
have_posts
関数はWordPress 1.5.0以降で使用可能です。
コアファイルのパス
この関数は、wp-includes/query.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 | 〇 |
サンプルコード
-
基本的なループ処理
これは、標準的なループを使用して投稿を表示するサンプルです。if ( have_posts() ) { while ( have_posts() ) { the_post(); the_title(); the_content(); } }
これは、次の投稿データがあるか調べ、その内容を出力する基本的な例です。
-
カスタム投稿タイプのループ
特定のカスタム投稿タイプを表示するサンプルです。$args = array('post_type' => 'custom_post_type'); $query = new WP_Query($args); if ( $query->have_posts() ) { while ( $query->have_posts() ) { $query->the_post(); the_title(); the_content(); } }
これは、特定のカスタム投稿を取り出して表示するためのコードです。
-
ページネーションの実装
ページネーションを含む投稿リストを表示するサンプルです。if ( have_posts() ) { while ( have_posts() ) { the_post(); the_title(); the_content(); } the_posts_pagination(); }
これは、投稿をループ処理し、ページネーションを追加する方法を示しています。
-
条件に基づく投稿の絞り込み
特定のカテゴリの投稿だけを表示するサンプルです。$args = array('category_name' => 'news'); $query = new WP_Query($args); if ( $query->have_posts() ) { while ( $query->have_posts() ) { $query->the_post(); the_title(); the_excerpt(); } }
特定のカテゴリに基づいて投稿を絞り込んで表示します。
-
ウィジェット内での使用例
ウィジェットで最新の投稿を表示するサンプルです。$args = array('posts_per_page' => 5); $query = new WP_Query($args); if ( $query->have_posts() ) { while ( $query->have_posts() ) { $query->the_post(); echo '<li>' . get_the_title() . '</li>'; } }
これは、最新の投稿リストをウィジェットで表示する方法を示した例です。