ランサーズ等のサービスを開発・運用する中で得た知識やノウハウを紹介しています。

thumbnail

Labels:  WordPress 投稿者:ota

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

参考になれば幸いです。

ランサーズではサービスを成長させてくれるエンジニア、デザイナーを募集しています!
ご興味がある方は、以下URLよりご応募ください。


【中途採用】
サービスリードエンジニア
テックリード(アーキテクト)
フロントエンドエンジニア
サーバーサイドエンジニア
業務エンジニア(社内システム基盤・基幹システム)

【インターン・学生バイト】
19新卒対象サマーインターン
エンジニアインターン

その他採用情報

関連記事

thumbnail
WordPressでCSSがすぐに反映されないのを解消する方法

ota(@purratto)です。 WordPressでCSSを編集したときに即座に反映されなかったことはありませんか? これはブラウザキャッシュが原因です。 style.css読み込み箇所を下記のように変更するだけでstyle.cssを即座に確実に反映できる …

thumbnail
WordPressで投稿者ごとの記事一覧ページを実装する方法

読書はカフェよりも大学図書館派のota(@purratto)です。実は一般にも開放しているところが多く、広々としていて開放的で、閲覧席がたくさんあるので席が埋まっていて座れないことがほぼなくて良いです(大学にもよるんでしょうが笑)。 WordPressで投稿者 …

AWSでWordPressのスケールアウト

インフラエンジニアの金澤です。 今回は、AWS上のWordPressサーバーをスケールアウトするために行った手順について紹介いたします。 ランサーズで運用しているWordPressサービス ランサーズでは10以上のWordPressサービスをAWSで運用してい …