dポイントプレゼントキャンペーン実施中!

WordPress 3.2.1でパーマリンクの設定を%postname%にして
固定ページのタイトルをURLに反映させているのですが、
固定ページのタイトルを数字のみにした場合に、URLの末尾に連番の-2がついてしまい、
URLがきちんと表示されません。

例)
http://○○○/01

http://○○○/01-2

上記のように勝手に-2がついてしまうのですが、
タイトル名通りのURLにするにはどうしたらよいでしょうか?

※サーバーはsakuraを利用していますが、ローカル環境でも同様の問題が発生します

A 回答 (2件)

返信が遅くなり申し訳ありません。


もう遅いかもしれませんが、一応回答しておきます。

前回の回答はあまり確認をしない状態で回答してしまいました。
確かにスラッグがかぶる以外にも、
連番が勝手についてしまうパターンが色々とあるようでした。
すみません。

バージョン 3.2.1 のコア部分のソースを読んでいったところ、
ユニークなスラッグ名を取得する用の関数を発見しました。
wp-includes/post.php の 2800行目にある wp_unique_post_slug です。
その中の 2831行目の中に

if ( $post_name_check || in_array( $slug, $feeds ) || preg_match( "@^($wp_rewrite->pagination_base)?\d+$@", $slug ) || apply_filters( 'wp_unique_post_slug_is_bad_hierarchical_slug', false, $slug, $post_type, $post_parent ) ) {

と書かれています。
この if にマッチする場合に末尾に連番が付与される仕組みです。

今回のパターンではその条件のうちの

preg_match( "@^($wp_rewrite->pagination_base)?\d+$@", $slug )

に引っかかります。
面倒なので詳細は省きますが、数字だけのスラッグはこれにマッチするため、
連番が付与されます。

いつのバージョンからからは分かりませんが、このようにしたのでしょう。

結論ですが、この部分を削除すれば数字だけのスラッグを登録することが出来ますが、
色々と弊害が起こる可能性があります。
(どのような弊害が起こるかは分かりません。起きないかもしれません。)

また、コアな部分を変更するため、
バージョンアップした際は再度編集する必要があります。

どうやらプラグインなどでは回避出来なそうなので、
こうするしかないのではないでしょうか?
個人的にはあまりおすすめはできない方法ですが、一応の解決策です。
    • good
    • 0
この回答へのお礼

ご返答頂きありがとうございます。
ソースまで調べていただいて申し訳ないくらいです。

wordpressは始めて間もないのでソースをいじって直すことは
出来ませんが、連番が付く根本の原因が分かり、
またそれがほぼ仕様のような形で付けられている事が分かったので、
納得はしております。
素直にバージョンアップで改善されるのを待つか、
改造する方法を見つけて対処しようと思います。
教えて頂きありがとうございます。

お礼日時:2011/09/07 12:37

すでに「01」というタイトルの固定ページが存在している状態で、


「01」というタイトルの固定ページを追加しようとしているからではないでしょうか?
当然同じURLで異なる固定ページを表示させるわけにはいかないので、
勝手に連番を付与するのでしょう。

ちなみに「%postname%」で使用される文字はタイトルではなくスラッグと呼ばれるものです。
特に指定しない場合は自動的にタイトルと同じものがスラッグに登録されます。
固定ページの編集画面の表示オプションで表示/非表示の設定ができるので、
ご確認してみてはいかがでしょうか?

この回答への補足

ご回答ありがとうございます。
返答が遅れてすみません。

「01」という固定ページが無い状態を確認し、ページを作成するのですが末尾に「-2」の連番が付いてしまいます。
また、数字のみの場合に限っては、「123」「999」などといったどんな数字でも同じように連番が付いてしまいます。

自分なりに調べてみましたが、wordpressのバージョン2.9.2までは数字のみの名前にしても問題ないのですが、バージョン3.0からは末尾に「-2」がつくようになってしまっています。

現在はwordpressのバージョンを落とすことで一応問題は解決していますが、今後もそれで対応していくというわけにもいかないため、問題を根本的に解決できるコメントを頂ければ幸いです。


>ちなみに「%postname%」で使用される文字はタイトルではなくスラッグと呼ばれるものです。

仰る通りタイトルではなくスラッグです。失礼致しました。

補足日時:2011/08/31 18:13
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!