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/
関連記事
-
-
Contact form7で送信数を測定(トラッキングタグ)
contact form7でフォーム送信が完了した時点で計測されるようにトラッキ ...
-
-
WordPressのユーザー画像とプロフィールの登録及び表示方法
WordPressでユーザー毎に画像とプロフィール部分にHTMLタグを登録したか ...
-
-
Contact form7でフォーム送信時に別サーバへもデータを送信する方法
contact form7でフォーム送信時に別サーバーでフォーム内容をPOST送 ...
-
-
Advanced Custom Fieldsで設定した項目を条件に記事一覧を取得する方法
WordPressでAdvanced Custom Fieldsにて設定した項目 ...
-
-
WordPressでタグやカテゴリの複数検索
WordPressでカテゴリのアンド検索や、タグとカテゴリの同時検索を行いたかっ ...