Yuriko.Net 個別記事

2008-08-10
晴れ

WP 2.6 にしたらカテゴリー/タグ URL が変わってしまった

ゆりこ による 03:42:38 の投稿
カテゴリー: WordPressハック
タグ: , ,

WordPress 2.6 へのアップグレードを見送っていた当サイトですが、一足飛びに、WordPress 2.6.1 ベータ版にアップグレードしました。2.6 正式版よりもバグが少ないとにらんでのことです ;-)

しかし、困った問題が発生しました。それは、カテゴリー URL が「http://www.yuriko.net/cat/ほげほげ/」→「http://www.yuriko.net/arc/cat/ほげほげ/」に変わってしまったことです。タグ URL も同様に「arc/」がついてしまいます。これは、パーマリンク構造を「/arc/%year%/%monthnum%/%day%/%postname%/」にしているために、先頭にある「/arc/」をカテゴリー URL、タグ URL にも補完してしまっているのでしょう。この挙動は不可思議なので、元に戻してもらいたいですよね……。さっそくチケット #7490を切りましたが、2.6.1 リリースまでに直してもらえるんでしょうか……。当面は、mod_rewrite かリダイレクトで逃げるしかなさそうですが。

[追記] ウチのサイトは「URL を変えない」ことが信条なのに、ソフトウェアの都合で URL 体系を変えられたら、たまったものではありません。とりあえず、wp-includes/rewrite.php をいじって元に戻しました。

450,451c450,454
<                       $this->category_base = 'category';
<               $this->category_structure = trailingslashit( $this->front . $this->category_base );
---
>                       $this->category_structure = $this->front . 'category/';
>               else
>                       $this->category_structure = '/' . $this->category_base . '/';
> //                    $this->category_base = 'category';
> //            $this->category_structure = trailingslashit( $this->front . $this->category_base );
469,470c472,476
<                       $this->tag_base = 'tag';
<               $this->tag_structure = trailingslashit( $this->front . $this->tag_base );
---
>                       $this->tag_structure = $this->front . 'tag/';
>               else
>                       $this->tag_structure = '/' . $this->tag_base . '/';
> //                    $this->tag_base = 'tag';
> //            $this->tag_structure = trailingslashit( $this->front . $this->tag_base );

[追記] 2.6.1 ベータ2で直りました。パーマリンク構造が /archives/%post_id% の場合でも同じ不具合が発生しますから、わりと重度な不具合だったと言えます。

トラックバック・コメント »

  1. [...] WordPress 2.6.1 ベータ2 がリリースされていました。「カテゴリー・タグアーカイブの URL が変わってしまう問題」や、「投稿を編集したときのタグ重複問題」(新規作成だけが改善されている!) が修正されています。 [...]

  2. はじめまして。いきなり質問させていただく失礼をお許しください。
    記事を拝見して、一つお聞きしたいのですが、私は2.7のバージョンのwordpressを使っています。
    投稿ページのパーマリンク設定のつもりで、こちらでいう「arc」と同じように、「entry」とつけたのですが
    月別アーカイブのアドレスにも「entry」が付いてしまいました。
    カテゴリは同じ設定のページから変更可能でしたが、アーカイブページの設定は見つけられませんでした。
    これを解決する良い方法を、何かご存じないでしょうか。
    (できればカテゴリと同じように、別に設定できればいいのですが・・)
    お返事いただけたら嬉しいです。
    どうぞよろしくお願いいたします。

    フミからのコメント
    • 投稿ページのパーマリンク設定のつもりで、こちらでいう「arc」と同じように、「entry」とつけたのですが
      月別アーカイブのアドレスにも「entry」が付いてしまいました。

      どうやら、これは付くのが仕様のようです。これをいじるには、パーマリンクの解析部分をいじるプラグインを入れる必要があって、けっこう難しいです (wp-includes/rewrite.php を読解すればよい)。
      いろいろとフィルターフックは用意されているので、技術的には可能なはずですが、あまりドキュメント化されてなくて、実現はけっこう大変そうです。Redirection プラグインなどを解析して調べるとよいかもしれません。

  3. こんにちは。すばやい返信に感謝します。
    教えていただいた内容を読解していこうと思いますが、
    さほどプログラムに詳しいわけではないので、仕様ならば現状は諦めるしかなさそうです。
    お返事をどうもありがとうございました。

    フミからのコメント

上に戻る

※スパム対策プラグインの影響により、すぐにトラックバックが反映されない場合があります。お手数ですが、半日ほど待ってみてください。

コメント投稿

※発言の責任を明確にするため「名無し」「通りすがり」「匿名希望」等の匿名は不可とします。捨てハンドルでもいいので必ず名乗ってください。
XHTML (使えるタグ): <a href="" title="" ktai=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <img localsrc="" alt=""> .
※スパム対策プラグインの影響により、すぐにコメント内容が表示されない場合があります。お手数ですが、半日ほど待ってみてください。

上に戻る