一部の有料テーマだと、投稿タイトルに日本語の場合は、自動的に投稿IDをスラッグにする機能を持っているテーマもあります。
今回、依頼で相談があった事例は、WordPressテーマがこの機能を持っている場合から、他のテーマへ変更したところ、パーマリンクに日本語URLが入ってしまうのを改善したいとのことでした。
手動で英数字だけのスラッグを設定すると解決できるのですが、スラッグを作るのは、手間が増えてしまいます。
根本的には、パーマリンク構造に %postname% を含まない、数字ペース( archives/%post_id% )だと、この問題が起きないのですが、記事数があるブログなので、パーマリンク構造を変更すると、SNSのイイネ数がリセットされてしまいます。イイネも獲得した外部リンクなので、SEO的にネガティブに働きかねないので、パーマリンク構造そのものの変更は、選択肢に入れることができません。
調べたら、まさに!という記事がありました。
日本語タイトルの場合は、記事IDに自動で変換、スラッグを手動設定している場合はそのままに。そんな処理をする方法が紹介されていました。
これを子テーマがある場合は、子テーマのfunctions.phpに追記してしまえば、オッケーです。
子テーマが存在しない場合は、Code Snippetプラグインを導入して、上のコードを追記すればOKです。
なお、すでに公開済みで日本語タイトルが含まれる記事も、記事編集画面にて更新を押せば、URLが変更されます。しかも、元々の日本語を含むURLからもリダイレクトしリンク切れになりませんでした。