こんにちは
下記コードではどうでしょうか。
あまり検証していないので内容を理解した上で利用してください。
多少の手直しは必要だと思います。特に新規追加時の処理は適当にコーディングしたので・・・。
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) {
if (adminpage == 'post-new-php') {
// 新規追加
slug = $('#post_name').val();
if (slug == '') {
// 新規追加でスラッグが空の場合はタイトルを検証する
slug = $('#title').val();
if (slug.match(/[^A-Za-z0-9]+/)) {
alert('新規追加時はタイトルを半角英数字で入力するかスラッグを入力してください。');
return false;
}
} else {
if (slug.match(/[^A-Za-z0-9]+/)) {
alert('スラッグ(パーマリンク)を半角英数字で入力してください。');
return false;
}
}
} else {
// 更新
slug = $('#post_name').val();
if (slug.match(/[^A-Za-z0-9]+/)) {
alert('スラッグ(パーマリンク)を半角英数字で入力してください。');
return false;
}
}
});
}
});
SCRIPT;
wp_add_inline_script( 'post', $script );
}
add_action( 'admin_enqueue_scripts', 'enqueue_post_slug_validation_script' );
早速ありがとうございます!
そして素晴らしいです!希望どおりの挙動をしてくれています。
追加として「9」のあとに「-_」を追加してハイフン、アンダーバーもOKとしました。
あと、カスタム投稿にも対応させたかったので以下のようにしました。
if ($(‘#post_type’).val() == ‘post’ || $(‘#post_type’).val() == ‘page’) {
▼
if ($(‘#post_type’).val() == ‘post’ || $(‘#post_type’).val() == ‘page’ || $(‘#post_type’).val() == ‘news’) {
手を加えたのはそれくらいです。
半端な知識しかないので、一から作るとなると難しいですが、ここまでヒント頂ければ応用しやすくて、本当に感謝しております!!
これでうっかりミスが減ります(笑)