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' );