MENU

get_post_field()

get_post_field は、WordPressの投稿やカスタム投稿タイプから特定のフィールド(例:タイトル、コンテンツ、スラッグなど)のデータを取得するためのテンプレートタグです。

目次

機能の説明

get_post_field は、指定された投稿IDの特定フィールドの値を取得します。

投稿タイトル、コンテンツ、抜粋、ステータスなど、投稿の主要な情報を柔軟に取得できます。

シンプルなコード例

$title = get_post_field('post_title', 42);
echo $title;

投稿IDが42の投稿からタイトルを取得して表示します。

使い方の解説

get_post_field() は、取得したいフィールド名と投稿IDを指定するだけで簡単に使えます。

引数

$field

取得したいフィールドの名前(例:post_titlepost_contentpost_status など)。

$post_id

フィールドを取得する投稿のID(整数)。

$context (オプション)

コンテキスト。raw(生データ)または edit(管理画面編集用フォーマット)のいずれかを指定できます。デフォルトは raw

$fieldの補足

$field には、投稿オブジェクトのプロパティやキー名を指定します。これは、get_post() などの関数で返される 投稿オブジェクトのフィールド と一致します。たとえば、'post_type''post_status''post_content' などです。

デフォルトのフィールド一覧:
  • ID: 投稿のID
  • post_author: 投稿者のユーザーID
  • post_date: 投稿日時(ローカル時刻)
  • post_date_gmt: 投稿日時(GMT時刻)
  • post_content: 投稿の本文
  • post_title: 投稿のタイトル
  • post_excerpt: 抜粋(エディターで設定可能)
  • post_status: 投稿の状態(publishdraftなど)
  • comment_status: コメントの許可設定
  • ping_status: ピンバックの許可設定
  • post_password: 投稿のパスワード
  • post_name: 投稿のスラッグ(URLで使用される文字列)
  • to_ping: ピンバックを送るURLのリスト
  • pinged: 送信済みピンバックのURLリスト
  • post_modified: 投稿の最終更新日時(ローカル時刻)
  • post_modified_gmt: 最終更新日時(GMT時刻)
  • post_content_filtered: フィルタされた投稿の本文(高度な用途向け)
  • post_parent: 親投稿のID(ページ階層で使用)
  • guid: 投稿のグローバルID(URLとして使用)
  • menu_order: メニュー順序(ページで使用)
  • post_type: 投稿タイプ(postpagecustom_post_typeなど)
  • post_mime_type: 添付ファイルのMIMEタイプ(image/jpeg など)
  • comment_count: コメント数filter: フィルタリング時に使用

戻り値

フィールド値

指定したフィールドの値が返されます。値がない場合は false が返されます。

オプション

$context

raw は保存されたままのデータを取得します。edit を指定すると管理画面向けに適切なフォーマットで取得されます。

$context 引数は、取得するデータの コンテキスト(文脈)を指定します。この引数は タクソノミーフィルター関数と関係しており、サポートされる値は rawedit です。

  • raw: 投稿がデータベースに保存されたそのままの状態で取得します。
  • edit: 管理画面向けに最適化されたフォーマットで取得します。

使用例

$content = get_post_field('post_content', 100, 'edit');
if ($content) {
    echo '<div class="post-content">' . $content . '</div>';
} else {
    echo 'コンテンツが見つかりません。';
}
  1. get_post_field(): 投稿IDが100の投稿から、編集フォーマットでコンテンツを取得します。
  2. 条件分岐: コンテンツが取得できた場合は表示し、見つからなかった場合はエラーメッセージを表示します。

投稿のステータス(post_status)を取得する例

$post_status = get_post_field('post_status', 42);
echo '投稿のステータス: ' . $post_status;

この例では、投稿IDが42の投稿のステータス(publishdraftなど)を取得しています。
取得するフィールド名は、上記の公式一覧から選ぶ必要があります。また、post_status のように正確なスペルで指定することが重要です。

$field には公式に指定されたフィールド名を使用する

  • デフォルトのフィールド一覧を参考にして、正確なフィールド名を指定します。$context 引数の使用でデータ形式を制御する
  • 生のデータが必要な場合は raw、管理画面での利用を意図する場合は edit を指定します。

投稿の本文(post_content)を取得する例

$post_content = get_post_field('post_content', 42);
echo '投稿の本文: ' . $post_content;

この例では、投稿ID 42 の本文(post_content)を取得し、その内容を表示しています。本文のフィールド名は post_content で、このように投稿の主要コンテンツも取得できます。

投稿の最終更新日時(post_modified)を取得する例

$post_modified = get_post_field('post_modified', 42);
echo '最終更新日時: ' . $post_modified;

この例では、投稿ID 42最終更新日時(ローカル時刻)を取得しています。
フィールド名は post_modified で、記事の更新履歴を管理したり、特定の条件で表示を切り替える際に使用されます。

一緒に使うことが多い関連タグ

get_the_title()

指定した投稿のタイトルを取得するためのテンプレートタグ。

$title = get_the_title(42);
echo '投稿のタイトル: ' . $title;

投稿IDが42の投稿タイトルを取得して表示します。

get_post_meta()

投稿に関連するカスタムフィールドのメタデータを取得します。

$views = get_post_meta(42, 'post_views', true);
echo '閲覧回数: ' . $views;

投稿IDが42の投稿から、post_views メタデータを取得して表示します。

追加情報を取得したい場合

投稿の関連情報を取得したい場合は、get_post() を使用することで、投稿のすべてのプロパティにアクセスできます。

get_post() で取得できる投稿情報

$post = get_post(42);
echo '投稿タイトル: ' . $post->post_title;
echo '投稿ステータス: ' . $post->post_status;

出力できる情報

  • post_title: 投稿のタイトル
  • post_content: 投稿のコンテンツ
  • post_status: 投稿の公開状態
  • post_date: 投稿日時

想定されるトラブル

投稿IDが間違っている

正しい投稿IDを指定してください。IDが無効な場合は false が返されます。

フィールドが存在しない

$field に指定する値が正しいか確認してください。誤ったフィールド名を指定すると false が返されます。

Q&A

投稿のカスタムフィールドも取得できますか?

いいえ、get_post_field() は投稿の標準フィールドのみ取得します。カスタムフィールドは get_post_meta() を使用してください。

投稿のステータスを取得したいのですが、どのフィールドを指定すればよいですか?

post_status をフィールド名として指定します。

すべての投稿情報を一度に取得したい場合はどうすればよいですか?

get_post() を使用すると、投稿の全プロパティにアクセスできます。

まとめ

get_post_field() は、特定の投稿から主要なフィールドの値を取得するための便利なテンプレートタグです。

指定するフィールド名によって、タイトル、コンテンツ、スラッグなど、さまざまなデータを取得できます。カスタムフィールドの取得には get_post_meta() を、投稿全体の情報には get_post() を使用することをお勧めします。

よかったらシェアしてね!
  • URLをコピーしました!

コメント

コメントする

This site uses Akismet to reduce spam. Learn how your comment data is processed.

目次