勉強したことのメモ

Webエンジニア / プログラマが勉強したことのメモ

WordPressで事前に指定した禁止ワードが入力されている場合は記事を保存・公開できないようにする方法

  WordPress CMS

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 CMS

  関連記事

WordPressでタグやカテゴリの複数検索
WordPressでタグやカテゴリの複数検索

WordPressでカテゴリのアンド検索や、タグとカテゴリの同時検索を行いたかっ ...

WordPressの記事をfacebookに投稿する際のOGP設定について
WordPressの記事をfacebookに投稿する際のOGP設定について

WordPressの記事をfacebookに投稿する際にOGP設定をする必要があ ...

WordPressで「No URL was~」というエラーの原因と対応方法
WordPressで「No URL was~」というエラーの原因と対応方法

WordPressでmp4ファイルをアップロードして記事に埋め込んだものの、記事 ...

PHP8系で「Warning: Attempt to read property
PHP8系で「Warning: Attempt to read property "xxxxxx" 」エラーの対応方法

PHP8系&WordPress6.4.3で「Warning: Attem ...

WordPressのサーバー移行で気付いた点
WordPressのサーバー移行で気付いた点

あるWordPressを置いているサーバーのリソースが苦しくなってきたので、新た ...