WordPressで事前に指定した禁止ワードが入力されている場合は記事を保存・公開できないようにする方法
WordPressで事前に指定した禁止ワードが入力されている場合に記事を保存・公開しようとすると、禁止ワードが含まれている旨のアラートを表示し、保存・公開できないようにしたい。また、ブロックエディタではなくClassic Editorプラグインを使用している環境に実装したい。以下に対応方法をメモ。
対応方法
functions.php
以下をfunctions.phpに追記する。禁止ワード部分($ng_words)は適宜変更する。
// 記事作成・編集の際、本文にNGワードが無いかチェック
function ng_words_validate( $hook ){
// 記事作成・編集ページじゃない場合は終了
if( $hook !== 'post.php' && $hook !== 'post-new.php' ){
return;
}
// 禁止ワードを配列で指定
$ng_words = array('禁止ワード', 'NGワード', '不適切ワード');
// インラインJSを注入する
$script = "
jQuery(document).ready(function($) {
console.log('start ng word check');
const ngWords = " . json_encode($ng_words) . ";
// フォーム送信時
$('#post').on('submit', function(e){
//入力内容の取得
let content = '';
// WYSIWYG使用時(ビジュアルタブ時)
if( typeof tinyMCE !== 'undefined' && tinyMCE.get('content') && !tinyMCE.get('content').isHidden() ){
content = tinyMCE.get('content').getContent();
// テキストエディタ使用時(コードタブ時)
}else{
content = $('#content').val() || '';
}
// 禁止ワードのチェック
for( let i = 0; i < ngWords.length; i++ ){
if( content.indexOf(ngWords[i]) !== -1 ){
alert('本文に禁止ワード「' + ngWords[i] + '」が含まれています。');
// フォームの送信を停止
e.preventDefault();
return false;
}
}
});
});
";
wp_add_inline_script('jquery-core', $script);
}
//ダッシュボードにJSファイルを読み込むためのフック
add_action('admin_enqueue_scripts', 'ng_words_validate');
リファレンス
admin_enqueue_scripts
https://developer.wordpress.org/reference/hooks/admin_enqueue_scripts/
wp_add_inline_script
https://developer.wordpress.org/reference/functions/wp_add_inline_script/
関連記事
-
-
WordPressの記事公開・更新時に何らかの処理を行う方法
WordPressで記事を公開(予約公開含む)もしくは更新した際に何らかの処理を ...
-
-
wp_mail関数でエンベロープFrom(Return-Path)が指定できない場合の対応方法
WordPress内に設置されたお問い合わせのフォームようなシステムでエンベロー ...
-
-
WordPressでコンテンツ(記事)内に広告を差し込む方法
WordPress内でヘッダーやフッターではなく、コンテンツ内にバナー広告を差し ...
-
-
WordPressでテーマファイル内で共通の変数を設定及び使用する方法
WordPressでテーマ内の共通変数を設定し使用したかった。例えば記事一覧ペー ...
-
-
WordPressで記事毎に設定したバナー広告を表示させる方法
WordPressでGoogleアドセンスのようなクリック広告ではなく、商品を指 ...