ワードプレスのget_post_status_object関数の使用方法・解説

概要

get_post_status_object 関数は、指定した投稿ステータスのオブジェクトを取得するための関数です。この関数は、投稿ステータスの情報を取得する際に使用され、以下のような場面でよく使われます。

  1. 投稿の状態を確認するため。
  2. カスタム投稿タイプのステータスを管理するため。
  3. プラグインで投稿の公開/非公開を制御するため。
  4. 投稿のリスト表示をカスタマイズするため。
  5. 投稿のメタ情報を編集する際のステータス確認。
  6. テーマで特定の投稿ステータスに基づいて表示を変更するため。
  7. 管理画面で投稿リストをフィルタリングするため。
  8. REST API のエンドポイントで投稿ステータスを扱うため。

この関数は、次の構文で使用されます。

get_post_status_object( string $status )

パラメータ

  • $status (string): ステータス名(例: ‘publish’, ‘draft’)。

戻り値

  • WP_Post_Status|false: 指定したステータスのオブジェクトが存在する場合はそのオブジェクトを、存在しない場合は false を返します。

関連する関数

使用可能なバージョン

  • この関数は、WordPress 2.9.0 以降で使用可能です。

コアファイルのパス

  • /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: 投稿ステータスオブジェクトを取得する

$status = get_post_status_object('publish');
if ($status) {
    echo 'ステータス名: ' . $status->name;
    echo 'ラベル: ' . $status->label;
}

このサンプルは、公開された投稿のステータスオブジェクトを取得し、その名前とラベルを出力します。

サンプル 2: 投稿ステータスの条件に基づいて表示を変更

$post_status = get_post_status_object(get_post_status($post_id));
if ($post_status->name === 'draft') {
    echo 'この投稿は下書きです。';
}

このサンプルでは、特定の投稿のステータスを取得し、それが下書きである場合にメッセージを表示します。

サンプル 3: カスタム投稿タイプのステータスを取得

$custom_status = get_post_status_object('my_custom_status');
if ($custom_status) {
    echo 'カスタムステータス: ' . $custom_status->label;
}

このサンプルは、カスタム投稿タイプの特定のステータスオブジェクトを取得し、そのラベルを表示します。

サンプル 4: 投稿リストのフィルタリング

function filter_post_list_by_status($query) {
    if (!is_admin() || !$query->is_main_query()) {
        return;
    }
    $query->set('post_status', 'pending');
}
add_action('pre_get_posts', 'filter_post_list_by_status');

このサンプルは、管理画面で表示される投稿リストを「保留中」の投稿に制限するカスタム関数を示します。

サンプル 5: REST APIでのステータスの取得

function get_post_status_in_api($response, $post, $request) {
    $response->data['status'] = get_post_status_object($post->post_status)->label;
    return $response;
}
add_filter('rest_prepare_post', 'get_post_status_in_api', 10, 3);

このサンプルは、REST APIのレスポンスに投稿ステータスのラベルを追加するカスタム関数を示しています。

この関数について質問する


上の計算式の答えを入力してください