get_post_statuses()


WordPressのget_post_statuses()関数は、登録されているすべての投稿ステータスを取得するために使用されます。

シンタックス

get_post_statuses();

この関数は引数を受け取らず、連想配列としてすべての投稿ステータスを返します。キーはステータスのスラッグ、値はステータスのラベルです。

使用例 1: すべての投稿ステータスを表示する

登録されているすべての投稿ステータスを取得し、表示します。

<?php
$post_statuses = get_post_statuses();
foreach ( $post_statuses as $status_slug => $status_label ) {
    echo '<p>' . $status_slug . ': ' . $status_label . '</p>';
}
?>

使用例 2: 投稿ステータスのリストをHTMLリストで表示する

取得した投稿ステータスをHTMLのリスト形式で出力します。

<?php
$post_statuses = get_post_statuses();
echo '<ul>';
foreach ( $post_statuses as $slug => $label ) {
    echo '<li><code>' . $slug . '</code> - ' . $label . '</li>';
}
echo '</ul>';
?>

使用例 3: 投稿ステータスを条件付きで確認する

特定の投稿ステータスが登録されているかを確認し、メッセージを出力します。

<?php
$post_statuses = get_post_statuses();
if ( array_key_exists( 'draft', $post_statuses ) ) {
    echo '<p>「draft」ステータスが登録されています。</p>';
}
?>

使用例 4: カスタム投稿ステータスを追加して確認する

カスタム投稿ステータスを追加した後、そのステータスが表示されるか確認します。

<?php
function custom_post_status() {
    register_post_status( 'custom_status', array(
        'label'       => 'カスタムステータス',
        'public'      => true,
        'show_in_admin_all_list' => true,
        'show_in_admin_status_list' => true,
    ) );
}
add_action( 'init', 'custom_post_status' );

$post_statuses = get_post_statuses();
foreach ( $post_statuses as $slug => $label ) {
    echo '<p>' . $slug . ': ' . $label . '</p>';
}
?>

使用例 5: 投稿ステータスを管理画面のセレクトボックスに表示する

管理画面で投稿ステータスをセレクトボックスに表示する方法です。

<?php
function post_status_select_box() {
    $post_statuses = get_post_statuses();
    echo '<select>';
    foreach ( $post_statuses as $slug => $label ) {
        echo '<option value="' . $slug . '">' . $label . '</option>';
    }
    echo '</select>';
}
add_action( 'admin_footer', 'post_status_select_box' );
?>

注意事項

get_post_statuses()はWordPressコアに登録されているすべての投稿ステータスを返します。

カスタム投稿ステータスを追加した場合、正しく登録されていればこの関数で取得できます。

出力されたデータを安全に利用するためにesc_html()esc_attr()を使用することを推奨します。


関連機能: