はじめに
WordPressのスラッグは標準、投稿タイトルが反映されます。
日本語の2バイト文字はURLエンコードされるため、見た目が長くなったり、SEOやSNS共有時に望ましくない表記になることがあります。
そこで、スラッグに日本語が含まれる場合、「post-投稿ID」の形式に自動変更します。
この記事では、この方法について説明します。
実装手順
以下のコードをfunctions.phpに追加します。
add_filter('wp_unique_post_slug', function ($slug, $post_id, $post_status, $post_type) {
if (preg_match('/(%[0-9a-f]{2})+/i', $slug) && ($post_type === 'post' || $post_type === 'page')) {
$slug = $post_type . '-' . $post_id;
}
return $slug;
}, 10, 4);
さいごに
今回紹介した方法を使えば、日本語タイトルの投稿でも自動で短くわかりやすいスラッグに変更でき、SEOやSNS共有時の問題を回避できます。

