WordPressのスラッグ(URLの一部)には日本語をそのまま登録できますが、URLが文字化けするため、第三者に共有時や管理面でデメリットがあります。
新規タグを追加する際など、日本語スラッグのまま登録され、そのまま修正を忘れてしまうことも少なくありません。
そこで当記事では、日本語スラッグを検出し、管理画面にメッセージを表示する方法をご紹介します。
どの項目に日本語スラッグが使われているか一目瞭然で、漏れなく修正できるようになります。
なぜ日本語スラッグは避けたほうがいいの?
WordPressではスラッグに日本語も使えますが、避けた方が無難な場面が多いです。
日本語で登録したURLは、ブラウザ上で%E3%81%82%E3%81%84
のようにエンコードされた文字列に変換され、文字化けしたように見えるためです。
SNSやメールでのシェア時に見づらく、何のページか判別しづらくなります。また、URLをコピーする際にも不便を感じることがあるでしょう。
WordPressのスラッグの変更方法については、下記記事で解説しています。

WordPressサイトで時折見られるのが、URLのスラッグが日本語のままになっている問題です。 スラッグが日本語のままだとURLがとても長くなってしまいます。WordPressに慣れてない人は見逃しがちな問題なので、ぜひチェックしておいてください。 スラッグとは? スラッグ(slug...
日本語スラッグを検出・表示する方法

メッセージ表示例
WordPressでは、スラッグに日本語が含まれているかをチェックして、管理画面にメッセージを表示することが可能です。クリックして編集画面に移動できます。
functions.phpに下記のコードをコピペすればOKです。
// 管理画面に日本語スラッグの投稿・タームを一覧表示
add_action('admin_notices', function () {
// 管理画面かどうか&get_current_screen関数が使えるかをチェック
if (!is_admin() || !function_exists('get_current_screen')) return;
// 現在の画面情報を取得
$s = get_current_screen();
$out = []; // 対象リストの出力用配列
// 投稿・ターム共通の検出処理をコールバック化
$check = function ($label, $items, $get_link, $get_name, $get_slug) use (&$out) {
foreach ($items as $item) {
// スラッグに日本語(URLエンコードで%が含まれる)を検出
if (strpos(urlencode($get_slug($item)), '%') !== false) {
// 編集リンク付きでリストに追加
$out[] = sprintf('<li><a href="%s">%s</a>(%s)</li>',
esc_url($get_link($item)), // 編集画面へのリンク
esc_html($get_name($item)), // 投稿・ターム名
esc_html($get_slug($item)) // スラッグ
);
}
}
};
// 投稿一覧ページでの検出処理(投稿・固定ページ・カスタム投稿に対応)
if ($s->base === 'edit') {
$check('post',
get_posts([
'post_type' => $s->post_type,
'numberposts' => -1,
'post_status' => 'any',
]),
fn($p) => get_edit_post_link($p->ID),
fn($p) => get_the_title($p),
fn($p) => $p->post_name
);
}
// ターム一覧ページでの検出処理(カテゴリー・タグ・カスタムタクソノミーに対応)
if ($s->base === 'edit-tags') {
$check('term',
get_terms([
'taxonomy' => $s->taxonomy,
'hide_empty' => false,
]),
fn($t) => get_edit_term_link($t->term_id, $s->taxonomy),
fn($t) => $t->name,
fn($t) => $t->slug
);
}
// 日本語スラッグが1件以上見つかった場合、メッセージとして表示
if ($out) {
echo '<div class="notice notice-warning"><p>日本語スラッグが検出されました:</p><ul>' . implode('', $out) . '</ul></div>';
}
});
コードの仕様・概要
このコードは、管理画面内で日本語スラッグを検出し、メッセージとして表示する仕組みです。
- 投稿・固定ページ・カスタム投稿に対応
- カテゴリー・タグなどのタクソノミーにも対応
- 該当する投稿・タームを一覧で表示し、各編集画面にリンク
日本語スラッグがある場合、メッセージに一覧表示されるので、修正作業がスムーズです。
補足・注意点
日本語スラッグの登録を制限するものではありません。以下の注意点もご確認ください。
すでに登録されているスラッグに影響はありません。今回のコードは、一覧画面で「日本語スラッグが使われている項目」を検出し、編集画面へのリンク付きで注意を促すだけの仕組みです。
たとえば「/会社概要」や「/お問い合わせ」のように、短く意味が明確な日本語スラッグは、あえて使っているケースもあります。ただし、この場合もURLがエンコード(変換)されるため、シェアや管理のしやすさを重視するなら英数字が無難です。
詳しくは、下記の記事も参考にしてみてください。

パーマリンクとは、簡単にいえばページのURLのことです。 この記事では、パーマリンクの概要やSEOへの影響、WordPress(ワードプレス)における設定方法・手順を解説します。一度設定したパーマリンクを安易に変更するとサイト運営に悪影響が出るので、記事やページを作成する前に、パーマリンクにつ...
まとめ
WordPressで日本語スラッグを検出・一覧表示する方法をご紹介しました。
日本語スラッグはURLがエンコードされて文字化けのように見えるほか、コピー・共有時にも不便さが残ります。見落としや修正忘れも起こりやすいため、一覧画面でのメッセージ表示は有効な対策です。
functions.phpにコードをコピペするだけで使えるので、日本語スラッグを英数字に修正したいときのチェック用ツールとして、ぜひご活用ください。
コメント