速報

アイリスプラザが不正アクセスで通販サイト停止|漏えい調査と利用者の確認先

CATEGORY

【WordPress】カスタム投稿のスラッグをIDにすると「-2」が付いてしまう

※本ページのリンクにはプロモーションが含まれています。

【WordPress】カスタム投稿のスラッグをIDにすると「-2」が付いてしまう

目次

本記事では、WordPressののスラッグに投稿IDを指定すると、「-2」のような枝番が付いてしまう場合の対処をご紹介しています。

カスタム投稿を追加したばかりで他の投稿のスラッグと重複しているわけでもないのに「-2」がついてしまう……

上記のような状況の方に参考にしていただければ幸いです。

では、解説していきます。

スポンサーリンク

【結論】hierarchicalがtrueになっている

カスタム投稿タイプでhierarchicalをtrueに、Custom Post Type UIの設定項目では階層を真に指定すると、に使用されるスラッグに整数のみの値を指定することができなくなります。投稿IDに関係なく整数のみの値は指定できません。

そのためカスタム投稿のスラッグにpost_idを指定したい場合は、必要がない場合はhierarchicalはfalseにしておきましょう。

なぜ階層を持たせると整数をスラッグにできないのか

WordPressのコードを深く追っていったわけではないですが、投稿の追加等を実行する際にスラッグ(post_name)には下記関数の実行結果が代入されています。

$data['post_name'] = wp_unique_post_slug( $data['post_name'], $post['ID'], $post['post_status'], $post['post_type'], $post['post_parent'] );

関数の全体像は下記をご参照ください。

https://core.trac.wordpress.org/browser/tags/5.8/src/wp-includes/post.php#L4736

wp_unique_post_slug()は引数のpost_nameに基づいて投稿の一意のスラッグを取得する関数です。(一意でない場合は-2などの枝番が付けられます。)

もし指定した投稿タイプが階層を持っている場合、post_id、post_parent、post_type名と同様のpost_name(スラッグ)を付けることはできなくなっているようです。整数は将来的にpost_idで使用されるため、関数内でいうところのbad_slug判定となり、スラッグ(post_name)には指定できず、「-2」等の枝番が付けられる……

そのため階層を持たせるとスラッグに整数を指定できないのだと思います。

スポンサーリンク

最後に

念のためお伝えしておくと、私自身WordPressのソースをじっくり深いところまで追ったことがないため、後半についてはあくまでそんな感じだろうなー程度の憶測でしかありません。

本記事で伝えたかったのはカスタム投稿でスラッグに投稿IDのような整数を指定したい場合は階層を持たせるのはやめましょうということですので、その点だけ伝わってくれていると嬉しく思います!

以上、WordPressでカスタム投稿のスラッグをIDにすると「-2」が付いてしまう場合の対処のご紹介でした!

この記事を書いた人

Ryohei

Webエンジニア / アプリ開発者 / 技術ブログ運営者

福岡のWeb制作会社に勤務するWebエンジニアです。10年以上にわたりWeb制作・開発に携わり、ヒアリングや進行管理から、コーディング、CMSの構築、システム開発、サーバーの構築・保守・運用まで、Webサイト制作の工程を幅広く担当しています。Webサイトは、これまでに100以上の構築・保守を手がけてきました。

個人でもWebサイトの制作・改修やWebアプリの開発・運用を行い、AIを活用した開発にも取り組んでいます。近年はWebセキュリティにも注力しています。

2015年から技術メディア「Into the Program」を運営し、実務や開発で得た知識をもとに、プログラミングの実装方法やWebサイトの運用・セキュリティ情報を発信しています。

主な分野
Webサイト構築・保守・運用 / HTML/CSS / JavaScript / PHP / WordPress / サーバー構築・保守・運用 / アプリ開発 / セキュリティ対策
資格・試験合格
情報セキュリティマネジメント試験
基本情報技術者試験
AWS認定ソリューションアーキテクト アソシエイト
PHP8技術者認定ウィザード
メディア運営
2015年〜

記事の作成・更新について

セキュリティ記事は、ベンダーの公式アドバイザリやCVE・JVNなどの一次情報を参照し、出典と情報確認日を記載します。実環境での検証を行った場合は、その環境と確認範囲を明示します。重要な追加情報や誤りを把握した場合は、内容を確認して追記・訂正します。

関連する記事

おすすめの書籍

キーワードから探す

スポンサーリンク

パーマリンク

Webページごとに付けられる、変わらない前提のURL。WordPressでは記事のURLの形式を設定できる。

詳しく見る

カスタム投稿タイプ

WordPressで、標準の「投稿」「固定ページ」とは別に、お知らせや商品などの独自の種類のコンテンツを作る機能。

詳しく見る