MENU

【WordPress】スラッグが日本語にならないように自動的に英字に変更する方法

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に追記しておくといいでしょう。

よかったらシェアしてね!
目次から探す