WordPressで日本語のパーマリンクで投稿しようとしたときに警告を出し投稿できないようにする方法

キーボードはREALFORCE派のota@purratto)です。REALFORCE91UG-Sが一番お気に入りです。

WordPressで日本語のパーマリンクで投稿しようとしたときに警告を出し投稿できないようにする実装を行ったので、その実装方法を解説します。
デモはこちら

実装方法

テーマのfunctions.phpに下記のコードを追記します。

function prevent_japanese_permalink() {
    // この例ではfunctions.phpにJavaScriptをべた書きしていますが、必要に応じて別ファイルに切り出してください。
    echo "<script type='text/javascript'>
            jQuery(document).ready(
                function($) {
                    $('#publish').on(
                        'click',
                        function(event) {
                            var permalink = $('#editable-post-name-full').text();
                            if (!permalink.match(/^[a-zA-Z0-9_-]+$/)) {
                                alert('日本語のパーマリンクでは投稿できません。アルファベットに変更してください。');
                                event.preventDefault();
                            }
                        }
                    );
                }
            );
        </script>";
}

// 新規投稿時
add_action('admin_footer-post-new.php', 'prevent_japanese_permalink', 11, 0);

// 更新時
add_action('admin_footer-post.php', 'prevent_japanese_permalink', 11, 0);

指定した投稿以降の投稿のみ日本語のパーマリンクでの投稿を防ぐ場合には上記の24、25行目を削除し、下記のコードを追記します。

// 指定した投稿ID以降の投稿は日本語のパーマリンクでの投稿を防ぐ
function prevent_japanese_permalink_after_specified_post_id() {
    // 投稿IDが100以降の投稿のみ日本語のパーマリンクの投稿を防いでいます。100の数字を指定したい投稿IDに変えて使ってください。
    if (get_the_ID() <= 100) {
        return false;
    }

    prevent_japanese_permalink();
}
// 更新時
add_action('admin_footer-post.php', 'prevent_japanese_permalink_after_specified_post_id', 11, 0);

すでに日本語のパーマリンクでの投稿があり、それらのURLを変えるつもりはなく、記事の編集が発生する場合は上記の実装にしておくのが良いと思います。このブログも過去に日本語のパーマリンクでの投稿があるため、指定した投稿以降の投稿のみ日本語のパーマリンクでの投稿を防ぐ実装にしています。

参考になれば幸いです。