サポート » 使い方全般 » パーマリンク枝番-2がとれない

  • 解決済 minami2013

    (@minami2013)


    ユーザー名minami2013と申します。
    お世話になります。
    初めて固定ページのWebサイト作りを行っています(未公開)。パーマリンクの枝番(-2)が付いてしまう現象で困っています。
    目的: 枝番なしのカスタマイズ番号を付けたい(例: /1001)

    ▽前提条件
    WordPress-3.6.1
    パーマリンク:カスタマイズ: /%postname%
    ゴミ箱: 完全に空で何もない。
    Revision: Better Delete Revisionで、データベースのRevisionは空にしている。
    有効化プラグイン: 上記とtinyMCE Advance のみ
    ▽-2が付くケース
    (1)記事を書く
    (2)タイトルは日本語ではなく、パーマリンクの初期値とするため1001と入力する。
    (3)下書きを保存すると、タイトルがパーマリンクとして1001-2入る。
    ※1. 下書きを介さず、最初から公開しても同じです。
    ※2. あえ得ない番号、例えば1099 と入力でも枝番がつきました。
    ▽異なるIEまたは異なるドメインのWordPressサイト
    現象は同じ
    ▽-2が付かないケース
    tt-01 にように枝番が最初から入っているケースではOK
    ▽備考
    Google検索では、ゴミ箱に同一スラッグがあるのが原因とされています。
    この状況は点検済みです。
    ▽質問
    そもそも、1001のような数値だけのパーマリンクは-2が付いて当たり前なのでしょうか。
    a-01 のようなケースでは付かないため。

    以上 ご存知の方のアドバイスよろしくお願いいたします。

5件の返信を表示中 - 1 - 5件目 (全5件中)
  • 1001という投稿IDがついた記事が別に存在していて、重複になるので-2が着くのだと思います。
    投稿IDとは、記事を編集している時のアドレス(http://ドメイン/wp-admin/post.php?post=1001&action=edit)のpost=1001の部分です。

    投稿ID自体はデータベースで同じ番号にならないようになっているので、パーマリンクを数字のみではなく、なにか英字などを含めるほうがお好みの番号でつけられると思います。

    nekomimiさん
    アドバイスありがとうござます。
    早速、wp-admin/post.phpを見てみました。この関係のソースであることが何となく分かりました。
    投稿後、数字の頭に何かの英字を付けると-2が付かないことまでは分かっていました。
    アドバイスの通り、投稿記事が hellow World 1件あったので完全削除しまた。でも、結果は同じです。下記は、再度試したものです。
    ▽入力と表示例:
    1010 → 1010-2
    1011 → 1011-2
    1012 → 1012-2
    以後、1019まで同じでした。
    ※なお、d1019 ならd1019 のままで代わりません。
    現在投稿記事はゼロで、固定ページも5個程度で試しています。ゴミ箱は完全に空です。
    英字を含めるとよいとのアドバイスですが、確かにその通りです。
    数字の場合は、どんな値でも存在認識となるようです。英字を含めなくてもOKとなるような、wp-admin/post.phpのソース変更はお気付きでしょうか。解消策の決め手のような気がしています。
    〔原因〕post.phpが関与していることは分かりました。ありがとうございます。

    投稿IDはデータベース上での主キーになっていてデータそのものを消しても再利用出来ません。
    同じものを再利用するためにはMySQLでいろいろ操作しないと無理ですが、そんなことをすると影響が大きすぎるので、通常一度使ったIDは使えない(使わない)のが一般的です。

    特にパーマリンクでは設定によって投稿IDそのもので表示することもあります。
    ですから「数字のみというのは避けたほうがいい」というのはそういう理由からです。

    nekomimiさん
    アドバイスありがとうございます。
    投稿IDが、MySQLデータベースで主キーになっていて仮に投稿を削除してもそれは残っているということですね。
    何となく分かりました。疑問なのは、投稿は当初のHellowWorld 1件ののみでそれ以外は無いことは確かです。
    因みに、88888や99999と入力しても-2が付きました。
    となると、理解できない話ではありますがMySQL データベース上でこの主キーを予約しているという形といえます。結果としててす。でも、テーブル上でこのようなことは在り得ないことです。
    となると、やはりPHP判定の誤りしか考えられません。
    こんな、初歩的なことは未だに残っているのも考えずらいことですし・・・
    でも、数字のみのパーマリンクにこだわっている訳ではありませんが・・・
    結局は、わかりません。
    もしかして、MySQL のテーブルを直接覗けばヒントがあるかも知れないのですが、これは経験がありません。

    minami2013です。
    数字のパーマリンクに枝番が付く件の自己解決です。

    結論は、nekomimiさんにアドバイスを頂戴の通り英字と数字混在のパーマリンクとします。

    原因ですが、調べていたところ「http://www.example.com/wp-includes/post.php
    」の2800行付近に下記のwp_unique_post_slugコードが見つかりした。最後の行が関係していそうです。しかし、ここはシステムコア領域のためユーザーメンテは避けるべきと思われます。
    ▽関連コード
    $post_name = wp_unique_post_slug($post_name, $post_ID, $post_status, $post_type, $post_parent);
    // expected_slashed (everything!)
    $data = compact( array( ‘post_author’, ‘post_date’, ‘post_date_gmt’, (以下省略)
    $data = apply_filters(‘wp_insert_post_data’, $data, $postarr);
    $data = wp_unslash( $data );
    $where = array( ‘ID’ => $post_ID );

5件の返信を表示中 - 1 - 5件目 (全5件中)
  • トピック「パーマリンク枝番-2がとれない」には新たに返信することはできません。