概要
get_post_status_object
関数は、指定した投稿ステータスのオブジェクトを取得するための関数です。この関数は、投稿ステータスの情報を取得する際に使用され、以下のような場面でよく使われます。
- 投稿の状態を確認するため。
- カスタム投稿タイプのステータスを管理するため。
- プラグインで投稿の公開/非公開を制御するため。
- 投稿のリスト表示をカスタマイズするため。
- 投稿のメタ情報を編集する際のステータス確認。
- テーマで特定の投稿ステータスに基づいて表示を変更するため。
- 管理画面で投稿リストをフィルタリングするため。
- 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のレスポンスに投稿ステータスのラベルを追加するカスタム関数を示しています。