【WordPress】投稿ステータスを「レビュー待ち」に強制変更する方法

【WordPress】投稿ステータスを「レビュー待ち」に強制変更する方法 WordPress

WordPressで複数人が投稿を行うサイトでは、誤って「公開」されてしまうことを防ぐために、投稿ステータスを「レビュー待ち(pending)」に強制変更したい場面があります。

この記事では、寄稿者や編集者が投稿を保存・更新したときでも、自動的に「レビュー待ち」に変更されるようにする方法を紹介します。管理者による確認を必須としたい場合に有効です。

functions.php に処理を追加する

使用中のテーマまたは子テーマの functions.php に、以下のコードを追加してください。

<?php
function force_pending_status_for_non_admin( $data, $postarr ) {
    // 管理者は除外
    if ( current_user_can( 'administrator' ) ) {
        return $data;
    }

    // 投稿タイプが "post" のときのみ適用(カスタム投稿にも対応可能)
    if ( $data['post_type'] === 'post' ) {
        // ステータスが公開・下書き・非公開 などでも強制的にレビュー待ちに変更
        $data['post_status'] = 'pending';
    }

    return $data;
}
add_filter( 'wp_insert_post_data', 'force_pending_status_for_non_admin', 10, 2 );
?>

このコードでは、管理者以外のユーザーが投稿を保存した場合に、必ずステータスを「pending」に書き換える処理を行っています。編集者や寄稿者がうっかり「公開」してしまう事故を防止できます。

カスタム投稿タイプにも対応させるには

投稿タイプを限定したくない場合は、条件部分を次のように変更できます。

// 全投稿タイプに適用する場合
// if ( $data['post_type'] === 'post' ) を削除またはコメントアウト

あるいは、対象を複数にしたい場合は以下のように配列でチェックします。

$target_post_types = array( 'post', 'custom_post' );
if ( in_array( $data['post_type'], $target_post_types, true ) ) {
    $data['post_status'] = 'pending';
}

注意点

  • この処理は新規投稿・更新の両方に適用されます。
  • 管理者ユーザーには影響しないため、通常どおりの公開・下書き保存が可能です。
  • カスタム投稿タイプのワークフロー管理にも応用できます。

まとめ

WordPressサイトを複数人で運用する場合、投稿ステータスを「レビュー待ち」に強制変更することで、誤公開や内容チェック漏れを未然に防ぐことができます。

特に、寄稿者や編集者に一時的な執筆権限を与える場合や、品質管理を徹底したいチーム運用においては、非常に有効なカスタマイズです。