WordPressで同じslugを使うときは公開URLと投稿種類を確認してから名前を決める
公開日: 執筆:佐藤
WordPressでslugを決めるときは、入力欄の言葉より、保存後に実際にできるURLを確認する。投稿と固定pageでは重複の扱いが同じではない。下書きで同じslugが見えていても、公開する段階で別のslugへ調整されることがある。
URLを管理する人が先に決めるべきなのは、「どの内容をどのURLへ置くか」である。titleは読者に内容を伝える。slugはURLを保つための名前である。二つを同じ作業として扱うと、見出しを直しただけでURLまで変えたり、必要なURLの移行を見落としたりする。
WordPressは投稿種類と親pageを見てslugの重複を調整する
WordPress 4.3のwp_unique_post_slug()は、post_nameを保存するとき、投稿状態、投稿種類、親pageなどの条件から重複を調べる。coreの処理では、draft、pending、auto-draftのslugはそのまま返す。一方、通常の投稿は同じ投稿種類の中で重複を調べ、固定pageのような階層型の投稿は同じ親の下で調べる。
固定pageのslugと通常投稿のslugは、別の名前空間として扱われる。固定pageどうしでも、親が違えば同じslugを使える場合がある。反対にattachmentは、固定pageのslugとの重複確認に含まれる。単に「同じslugは使えない」と覚えると、実際のURLの構造を見誤る。
重複や予約語との衝突がある場合、coreは末尾へ-2、-3のような番号を付けて代替のslugを探す。その結果、編集画面で意図した名前と、公開されたURLが一致しないことがある。保存後のpermalinkを読む理由はここにある。
titleを変える作業とURLを変える作業を分ける
たとえば固定pageのtitleを「サービス案内」から「制作サービス」へ直しても、URLがすでに/service/として配られているなら、slugを直す必要があるとは限らない。読者の目に触れるtitleと、すでに使われているURLは、別々に判断する。
新しいpageを作るときは、まず内容の役割を一文にする。会社全体のサービスを説明するpageなのか、個別の制作内容を説明するpageなのか、問い合わせ前の説明pageなのか。その一文が違うなら、titleだけでなくslugも分ける。
| 内容の役割 | URLを決めるときの考え方 |
|---|---|
| サイト全体のサービス案内 | 広い役割を表す短いslugを使う |
| 個別の制作内容 | 上位pageと混同しない名前を使う |
| 古いpageの置き換え | 旧URL、移転先、既存の内部linkを先に確認する |
検索語を詰め込んでslugを長くするより、更新する人が用途を判断でき、読者も別の内容と取り違えない名前の方がよい。同じ言葉が必要なら、親pageや投稿種類を含めたURL全体で区別できるかを見る。
下書きではなく公開するURLを確認する
下書きのslugは重複のまま残ることがある。この状態だけを見て、新しいpageが同じURLで公開されると判断してはいけない。公開前に、次の順序で確認する。
- 投稿一覧と固定page一覧から、同じ役割の公開済みpageを探す。
- 新しい内容のtitleを決め、slugを入力する。
- 保存したあと、permalinkを開いて、URL全体と表示内容を確かめる。
- 既存URLを置き換えるなら、残すURL、移すURL、内部linkを直す担当を決める。
外部へ作成を頼む場合も、URLの最終判断まで渡す必要はない。pageを追加する作業と、どのURLを残すかを決める作業は別である。前者は制作の手順であり、後者は将来の更新、案内、内部linkに影響する運用の判断になる。
slugを整えたいだけなら、titleの修正で足りる場合がある。反対に、内容の役割を置き換えるなら、URLを変える理由と、古いURLへ来る人の行き先まで確認する。保存ボタンを押した時点でURLが決まったと思わず、公開するpageを一度開いて確認することが大切である。
関連記事

