WordPressのパーマリンク設定で%postname%が指定されていると、記事を投稿する時にスラッグ(URL)を変更しないとタイトルがそのままスラッグになります。
日本語で書いているブログであれば、変更しない限り投稿スラッグが日本語になってしまいますね。
別に日本語の投稿スラッグでもいいのですが、ソーシャルメディアでシェアしたりする場合、URLに以下のような英数字の羅列が含まれてしまいます。
%E6%8A%95%E7%A8%BF%E3%82%B9%E3%83%A9%E3%83%83%E3%82%B0
ソーシャルでシェアすることも意識するのであれば、URLはなるべく短い方が見栄えがいいです。
そこで今回は、投稿スラッグを自動的に生成して、スラッグに日本語が使えないようにする方法をご紹介したいと思います。
投稿スラッグを自動的に生成し日本語が使えないようにする
投稿スラッグを自動的に生成するには、functions.phpに以下のコードを追加します。このコードは、Simple Colorsさんが考案したものです。
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 );
上記コードを追加すると、以下のような動作になります。
- 自分でスラッグを英数字に変更したら何もしない
- 日本語などマルチバイトの場合は、{投稿タイプ}-{記事ID}に強制的に変更
記事投稿時に何もしなければ、投稿スラッグはpost-123のように記事IDに変更され、自分でスラッグを変更した場合はそのままにしてくれる、という何とも素晴らしい動きになっています。
なお、過去記事については、記事を編集しない限りスラッグは変更されません。
あとがき
パーマリンク設定で%postname%を指定していると、タイトルが長い場合に途中で切れたりもしますよね。そういうのもなくなるので、すごく管理が楽になります。
URLをよりシンプルにしたい場合は、設定してみましょう。