WordPressで公開前に確認メッセージを追加する方法
TL;DR
投稿を誤って公開するのを防ぐため、公開ボタンを押したときに確認ダイアログを表示できます。簡単なプラグイン方式(手軽)と、functions.phpやサイト固有プラグインにコードを追加する方式(柔軟)の2通りを紹介します。
背景と目的
ブログを書いていると、誤って「公開」ボタンを押してしまい、未完成の記事がライブになってしまうことがあります。ソーシャルで拡散されたり、購読者に配信されたりすると対応に追われ、ユーザー体験やSEOに悪影響を与える可能性があります。これを防ぐために、公開操作時にユーザーへ確認メッセージを出すのが有効です。
重要: 確認ダイアログは予防策であり、最終的な運用フロー(レビュー・下書き運用)と併用することをおすすめします。
方法の概要
- プラグインを使う(簡単、設定不要が多い)
- テーマのfunctions.phpまたはサイト固有プラグインにコードを追加する(カスタマイズや互換性対応が可能)
プラグインで実装する(簡単な方法)
最も手早い方法は、Confirm Publishing Actions のような無料プラグインを使うことです。手順:
- WordPress管理画面のプラグイン > 新規追加を開く
- “Confirm Publishing Actions” を検索し、インストールして有効化
- 設定不要で、公開・更新・削除時に確認ダイアログが表示される
利点:
- 技術的な操作が不要
- テーマ更新で消える心配がない(ただしプラグイン自体の管理は必要)
注意: プラグインによってGutenberg(ブロックエディター)やクラシックの対応状況が異なります。事前にプラグインの説明や評価、最終更新日を確認してください。
コードスニペットで実装する(カスタマイズ可能)
プラグインを増やしたくない場合、以下のコードをテーマの “functions.php” に追加するか、推奨はサイト固有プラグインに入れてください。これにより公開ボタンを押したときにJavaScriptで確認ダイアログを表示します。
function add_publish_confirmation(){
$confirmation_message = '投稿を公開してもよろしいですか?';
$script = '';
echo $script;
}
add_action('admin_footer','add_publish_confirmation');
コードの説明:
- $confirmation_message: 表示する文言。必要に応じて日本語の別文言に変更してください。
- json_encode を使ってJSに安全に文字列を埋め込んでいます(クオートや特殊文字のエスケープ対策)。
- セレクタはクラシックエディター(#publish、#save-post)とGutenberg(.editor-post-publish-button 等)をカバーしますが、エディタのアップデートでクラス名が変わる可能性があります。
重要: このコードは管理画面のフッターでスクリプトを出力します。テーマファイルに直接追加する場合、テーマのアップデートで消える可能性があるため、可能ならサイト固有プラグインに追加してください。
Gutenberg(ブロックエディター)とクラシックの互換性
- Gutenbergは頻繁にクラス名やコンポーネントを変更するため、将来的にセレクタが一致しなくなる場合があります。
- より堅牢にするには、カスタムプラグインとして公式フックを利用してJavaScriptをenqueueする方法を検討してください(admin_enqueue_scripts を使い、依存にjQueryを指定)。
簡単なenqueue例(応用):
function enqueue_publish_confirm_script($hook){
if(strpos($hook, 'post.php') === false && strpos($hook, 'post-new.php') === false) return;
wp_enqueue_script('my-publish-confirm', plugin_dir_url(__FILE__) . 'js/publish-confirm.js', array('jquery'), false, true);
wp_localize_script('my-publish-confirm', 'myPublishConfirm', array('message' => '投稿を公開してもよろしいですか?'));
}
add_action('admin_enqueue_scripts', 'enqueue_publish_confirm_script');
上記は、外部JSファイルでより管理しやすくするパターンです。
運用チェックリスト(ロール別)
- 管理者
- コードを追加する前にバックアップを取得する
- テーマ更新で消えないようサイト固有プラグイン化を検討する
- 編集者/投稿者
- 確認メッセージが表示されることを組織内で周知する
- 定期的に編集フローをレビューし、誤公開が起きない対策を共有する
テストケースと受け入れ基準
- テスト1: 下書きから公開ボタンを押すと確認ダイアログが表示される
- テスト2: 確認でOKを押すと投稿が公開される
- テスト3: 確認でキャンセルを押すと投稿は公開されず、編集中の画面に留まる
- テスト4: Gutenbergとクラシックの両方で動作する
受け入れ基準: 上の4つのテストがパスすること。自動テストが難しい場合は手動で複数ブラウザで確認してください。
ロールバック(取り消し)手順
- プラグイン方式: プラグインを無効化/削除する
- コード方式: functions.php から該当のコードを削除、またはサイト固有プラグインを無効化
注意: 変更前に必ずバックアップを取り、ステージング環境で確認してから本番に反映してください。
いつ効かないか・落とし穴
- JavaScriptが管理画面でブロックされている場合(他プラグインの干渉やカスタム管理画面の変更)には動作しないことがある
- Gutenbergの内部実装変更によりセレクタが変わると無効化されるため、定期的な運用チェックが必要
- ユーザビリティ: 頻繁に確認が出ると作業効率が落ちる可能性があるため、ワークフローに合わせて導入するか検討する
代替アプローチ
- 公開権限を制限してレビュー・承認フローを導入する(複数人運用の組織向け)
- ステージング→レビュー→本番公開のワークフローを採用する
まとめ
公開前の確認ダイアログは、誤公開を防ぎ、対応コストを下げるシンプルで有効な対策です。プラグイン方式は手早く安全で、コード方式は柔軟性があります。テーマ編集よりもサイト固有プラグイン化して運用することを推奨します。
用語集
- Gutenberg: WordPressのブロックエディター
- クラシックエディター: 従来の投稿編集画面
- サイト固有プラグイン: テーマに依存しない独立したカスタムプラグイン
重要な注意
- 変更前に必ずバックアップを行い、ステージング環境で動作確認してください。プラグインやテーマの更新によって挙動が変わることがあります。