【WordPress】投稿画面に確認チェックボックスを追加して公開前の確認を促す方法

【WordPress】投稿画面に確認チェックボックスを追加して公開前の確認を促す方法 WordPress

WordPressで複数人が投稿するサイトや、誤投稿を防ぎたい運用では、「タイトルは記入済みか」「アイキャッチ画像は設定されているか」などを投稿者に確認してもらう仕組みが重要です。

この記事では、投稿画面に「公開前にチェックを入れてください」といった確認用のチェックボックスを追加し、それがオンでないと投稿できないよう制限する方法を紹介します。

確認チェックボックスを投稿画面に追加する

まず、functions.phpに以下のコードを追加して、投稿画面の右サイドバーに確認チェックボックスを表示させます。

<?php
// チェックボックスを追加
function add_confirmation_checkbox_meta_box() {
    add_meta_box(
        'confirm_before_publish',
        '公開前チェック',
        'render_confirmation_checkbox',
        'post',
        'side',
        'high'
    );
}
add_action('add_meta_boxes', 'add_confirmation_checkbox_meta_box');

function render_confirmation_checkbox($post) {
    $value = get_post_meta($post->ID, '_confirm_before_publish', true);
    wp_nonce_field('confirm_checkbox_nonce_action', 'confirm_checkbox_nonce');
    echo '<label><input type="checkbox" name="confirm_checkbox" value="1"' . checked($value, '1', false) . ' /> 公開前に確認しました</label>';
}

// 保存時にチェック状態を保存
function save_confirmation_checkbox($post_id) {
    if (
        defined('DOING_AUTOSAVE') && DOING_AUTOSAVE ||
        !isset($_POST['confirm_checkbox_nonce']) ||
        !wp_verify_nonce($_POST['confirm_checkbox_nonce'], 'confirm_checkbox_nonce_action')
    ) {
        return;
    }

    $checked = isset($_POST['confirm_checkbox']) ? '1' : '';
    update_post_meta($post_id, '_confirm_before_publish', $checked);
}
add_action('save_post', 'save_confirmation_checkbox');
?>

これにより、投稿画面の「公開」エリアの下部に「公開前に確認しました」というチェックボックスが表示されるようになります。

チェックされていないと公開できないように制御する

次に、チェックが入っていない場合は公開・更新をブロックし、エラーメッセージを表示する処理を追加します。

<?php
function block_publish_if_unchecked($post_data, $post_array) {
    if (
        $post_data['post_status'] === 'publish' ||
        $post_data['post_status'] === 'future'
    ) {
        $confirmed = get_post_meta($post_array['ID'], '_confirm_before_publish', true);
        if ($confirmed !== '1') {
            wp_die('公開前の確認チェックを行ってください。<br><a href="' . esc_url(admin_url('post.php?post=' . $post_array['ID'] . '&action=edit')) . '">戻る</a>');
        }
    }
    return $post_data;
}
add_filter('wp_insert_post_data', 'block_publish_if_unchecked', 10, 2);
?>

このコードにより、チェックが入っていない状態で「公開」や「予約投稿」を実行しようとすると、公開処理が中断され、注意メッセージが表示されます。

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

add_meta_box() の対象投稿タイプに 'post' だけでなく 'custom_post_type' を追加すれば、任意のカスタム投稿でも同様のチェックを行えます。

'post' を配列にする例:
array('post', 'custom_post_type')

まとめ

WordPressの投稿画面に確認チェックボックスを追加することで、公開前のチェックを徹底し、誤投稿や内容不足を防ぐ仕組みを簡単に構築できます。

特に複数人で運用するサイトや、一定の品質を保ちたいメディアでは、手動確認をルール化するだけでなく、こうしたシステム的な制御を導入することで、より安定した運用が可能になります。