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でカテゴリのアンド検索や、タグとカテゴリの同時検索を行いたかっ ...
-
-
WordPressの記事をfacebookに投稿する際のOGP設定について
WordPressの記事をfacebookに投稿する際にOGP設定をする必要があ ...
-
-
WordPressで「No URL was~」というエラーの原因と対応方法
WordPressでmp4ファイルをアップロードして記事に埋め込んだものの、記事 ...
-
-
PHP8系で「Warning: Attempt to read property "xxxxxx" 」エラーの対応方法
PHP8系&WordPress6.4.3で「Warning: Attem ...
-
-
WordPressのサーバー移行で気付いた点
あるWordPressを置いているサーバーのリソースが苦しくなってきたので、新た ...