WordPressでは、パーマリンク設定に「投稿名」を入れることが推奨されています。
この場合、投稿画面でパーマリンク(URLスラッグ)を編集して任意のスラッグ名を入力できますが、これを忘れると日本語タイトルがそのままURLに反映されてしまします。
ここで問題になるのは、日本語が含まれるURLは(環境によって)下記のようにエンコードされた長い文字列のURLに変換されてしまうことです。
例)
https://open-cage.com/%e6%97%a5%e6%9c%ac%e8%aa%9e%e3%83%91%e3%83%bc%e3%83%9e%e3%83%aa%e3%83%b3%e3%82%af%e3%81%aeurl%e3%82%b9%e3%83%a9%e3%83%83%e3%82%b0%e3%82%92%e8%87%aa%e5%8b%95%e7%94%9f%e6%88%90%e3%81%99%e3%82%8b/
SEO的な影響については様々な見解がありますが、これではクリックやシェアがされづらくなりそうなので、出来れば日本語のURLスラッグは避けた方が良いでしょう。
URLスラッグは記事の公開後でも変更できますが、リンク切れの問題やSEO的なデメリットも考えられるため、いったん公開した記事のURLスラッグ変更はおすすめしません。
本来は、URLスラッグを「automatic-slug」のように英単語で設定するのが望ましいのですが、万が一スラッグを設定し忘れてしまっても自動的に「URLスラッグ」を生成するカスタマイズをご紹介します。
今回のカスタマイズでは、記事IDベースのスラッグが自動生成されるようになります。
カスタマイズコードを記述
下記のコードを、子テーマのfunctions.phpに貼り付けてカスタマイズは完了です。
//URLスラッグの自動生成
function auto_post_slug( $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;
}
add_filter( 'wp_unique_post_slug', 'auto_post_slug', 10, 4 );
このカスタマイズによって、投稿や固定ページのタイトルが日本語の場合に、例えばpost-123のような記事IDを含めたURLスラッグが自動生成されるようになります。
投稿 / 固定ページ | 自動生成されるURLスラッグ |
---|---|
投稿の場合 | post-id |
固定ページの場合 | page-id |
タイトルが英語の場合は、標準通りアルファベットのURLスラッグが自動生成されます。
まとめ
ここまで、URLスラッグを自動生成するカスタマイズについてご紹介しましたが、原則としてURLスラッグには、記事タイトルのキーワードを組み入れた英単語の設定をおすすめします。
出来るだけURLスラッグは短く端的に、ユーザーにわかり易くすることも大切です。