WordPress スラッグの日本語入力を制限

WordPress の投稿や固定ページのスラッグにおいて、日本語を使用しないようにしているのですが、たまに忘れてしまい後から慌てて修正することがありました。

そこで、保存時に検証することにしました。コーディングしていると・・・既視感半端ないって。めっちゃスラスラコーディングするもん。そうです、以前コーディングしていたんですね。WordPress フォーラムで回答するためにコーディングしたことを忘れていました。またコーディングしないように、ここでも紹介しておきます。

テーマの functions.php 等に記述してください。

function enqueue_post_slug_validation_script( $hook ) {
	if ( $hook !== 'post.php' && $hook !== 'post-new.php' )
		return;

	$script = <<<SCRIPT
jQuery(function($) {
  if ($('#post_type').val() == 'post' || $('#post_type').val() == 'page') {
    $('#post').submit(function(e) {
      var pattern = /[^A-Za-z0-9-]+/;
      var slug = $('#post_name').val();
      if (slug == '' && adminpage == 'post-new-php') {
        slug = $('#title').val();
        if (slug.match(pattern)) {
          alert('タイトルまたはスラッグ(パーマリンク)を半角英数字およびハイフンで入力してください。');
          return false;
        }
      }
      if (slug.match(pattern)) {
        alert('スラッグ(パーマリンク)を半角英数字およびハイフンで入力してください。');
        return false;
      }
    });
  }
});
SCRIPT;

	wp_add_inline_script( 'post', $script );
}

add_action( 'admin_enqueue_scripts', 'enqueue_post_slug_validation_script' );

コメントを残す

メールアドレスが公開されることはありません。

日本語でコメントを入力してください。