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の投稿画面に確認チェックボックスを追加することで、公開前のチェックを徹底し、誤投稿や内容不足を防ぐ仕組みを簡単に構築できます。
特に複数人で運用するサイトや、一定の品質を保ちたいメディアでは、手動確認をルール化するだけでなく、こうしたシステム的な制御を導入することで、より安定した運用が可能になります。