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_title
、post_content
、post_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: 投稿の状態(
publish
、draft
など) - 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: 投稿タイプ(
post
、page
、custom_post_type
など) - post_mime_type: 添付ファイルのMIMEタイプ(
image/jpeg
など) - comment_count: コメント数filter: フィルタリング時に使用
戻り値
- フィールド値
-
指定したフィールドの値が返されます。値がない場合は
false
が返されます。
オプション
$context
-
raw
は保存されたままのデータを取得します。edit
を指定すると管理画面向けに適切なフォーマットで取得されます。
$context
引数は、取得するデータの コンテキスト(文脈)を指定します。この引数は タクソノミーフィルター関数と関係しており、サポートされる値は raw
と edit
です。
raw
: 投稿がデータベースに保存されたそのままの状態で取得します。edit
: 管理画面向けに最適化されたフォーマットで取得します。
使用例
$content = get_post_field('post_content', 100, 'edit');
if ($content) {
echo '<div class="post-content">' . $content . '</div>';
} else {
echo 'コンテンツが見つかりません。';
}
get_post_field()
: 投稿IDが100の投稿から、編集フォーマットでコンテンツを取得します。- 条件分岐: コンテンツが取得できた場合は表示し、見つからなかった場合はエラーメッセージを表示します。
投稿のステータス(post_status
)を取得する例
$post_status = get_post_field('post_status', 42);
echo '投稿のステータス: ' . $post_status;
この例では、投稿IDが42の投稿のステータス(publish
、draft
など)を取得しています。
取得するフィールド名は、上記の公式一覧から選ぶ必要があります。また、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()
を、投稿全体の情報には get_post()
を使用することをお勧めします。
コメント