WordPressのスラッグにはメモページ
のように日本語を設定することができます。
ですが、日本語テキストをスラッグとして設定してしまった場合、URL をコピーする時にかなり長くなってしまい、ぱっと見では何のページなのか分かりません。
例えばこのページのスラッグをメモ
とした場合、ブラウザのアドレスバーではhttps://nidea.jp/wordpress/メモ
となりますが、いざURLをコピーするとhttps://nidea.jp/wordpress/%E3%83%A1%E3%83%A2
となってしまいます。
そうならないために英字スラッグを設定している人も多いと思いますが、うっかり忘れてしまって日本語スラッグのままページを公開でしまうことがあります。
そこで今回は、スラッグの設定忘れて日本語スラッグになってしまわないように、自動的に英数字スラッグに変更できるようにする方法を紹介です。
スラッグを自動的に英数字スラッグに変更させる方法
スラッグの設定をし忘れるとページタイトルのテキストで代用されて保存されますが、スラッグの保存処理に変更を加えるフィルター関数が用意されており、そのフィルター関数を用いれば、スラッグの保存時にスラッグに日本語が含まれていたら変更処理を加える処理
を実現できます。
具体的には、以下のコードをfunctions.php
に貼り付けることで実現できます。
add_filter( 'wp_unique_post_slug', function( $slug, $post_ID, $post_status, $post_type ) {
if ( preg_match( '/(%[0-9a-f]{2})+/', $slug ) ) {
$slug = utf8_uri_encode( $post_type ) . '-' . $post_ID;
}
return $slug;
}, 10, 4 );
上記コードをfunctions.php
に貼り付けて保存した後、試しに日本語スラッグを設定しているページの編集画面を開き、何でもいいのでそのまま保存してみてください。
スラッグに日本語や全角文字などが含まれていた場合、post-93
のように投稿タイプ-ページID
の形式のスラッグに自動的に置き換わったはずです。
これで、うっかりスラッグの変更を忘れたままページを公開してしまっても、スッキリした短い URL でページを公開することができます。
一番良いのはスラッグの設定を忘れないことですが、人間である以上いつかは必ずミスしてしまうので、いざという時の保険と思ってスラッグを自動設定するコードをfunctions.php
に追記しておくといいでしょう。