Top Level Categories Fixプラグイン

Top Level Categories Fixプラグインは、Top Level Categoriesプラグインを使用時に、パーマリンク設定を「/%category%/%postname%/」などのように設定した場合にページナビゲーション(Pagination)やサブカテゴリが正しく機能しなくなる不具合を修正するプラグインである。Top Level Categoriesについては、URLにcategoryを表示させないプラグイン Top Level Categories Pluginで紹介したわけだが、パーマリンクのURLの末尾に/(スラッシュ)をつけるプラグイン Nice Trailingslashitの記事の中でこの不具合について触れた。

この不具合についてなんとか解決策はないものかとお問い合わせをいただいたので、暫定的にTop Level Categories Fixプラグインを公開したいと思う。ページナビゲーション(Pagination)が正しく機能しないというのは、例えばexample.com/category/page/2/のような場合に、404を返してしまうというものだ。サブカテゴリの時も同様で、例えばexample.com/category1/category2/のような場合にも404を返してしまうのだ。

不具合の発生条件

  • Top Level Categoriesを使用している
  • パーマリンクを「/%category%/%postname%/」のように「/」で終えている。(末尾が.htmlなどの場合にはこの不具合は発生しない。)

ヒストリー

  • 2008.08.25 Top Level Categories Fix 0.2.3 リリース
    • Language Switcher使用時の不具合修正。ソースの該当箇所がコメント化されているのでコメントを消して使用する。
  • 2008.08.18 Top Level Categories Fix 0.2.2 リリース
    • バグフィックス
  • 2008.08.17 Top Level Categories Fix 0.2.1 リリース
    • バグフィックス
  • 2008.08.16 Top Level Categories Fix 0.2 リリース
    • /%category%/%post_id%/ に対応
  • 2008.08.14 Top Level Categories Fix 0.1 リリース

ダウンロード

Top Level Categories Fixをインストール

このプラグインの使用方法は大変簡単で、圧縮ファイルをダウンロード、解凍したtop-level-cats-fixディレクトリを、wp-content/pluginsにアップロードしてほしい。管理メニューのプラグインページで有効化すれば不具合が解消されるはずである。

寄付

プラグインがお気に召しましたら、よろしければ下記のPaypalリンクよりご寄付ください。よろしくお願いいたします。

このプラグインは何をしているの?

不具合の発生条件の際に、WordPressがクエリをパースする過程で、カテゴリを表示しているにも関わらず、カテゴリと判定されない、またはページ番号がうまくセットされないというのが問題なので、不具合の発生時に強制的に判定内容をセットしている。

もしかしたらもっと良い解決方法があるかもしれない。また、もしかしたらうまく動作しない場合もあるかもしれないのでその際は教えてほしい。最後に、もともとのプラグインであるTop Level Categoriesがこの不具合を解決してくれることを期待したいものだ。

Top Level Categories Fix plugin

This plugin modifies the url which includes subcategories and paginations when the Top Level Categories plugin is in use.

Occurrence Condition

  • Top Level Categories plugin in use
  • The permalink is ended at a slash “/” such as “/%category%/%postname%/”

History

  • 2008.08.25 Top Level Categories Fix 0.2.3 release
    • Bugfix for the Language Switcher plugin.
  • 2008.08.18 Top Level Categories Fix 0.2.2 release
    • Bugfix.
  • 2008.08.17 Top Level Categories Fix 0.2.1 release
    • Bugfix.
  • 2008.08.16 Top Level Categories Fix 0.2 release
    • /%category%/%post_id%/
  • 2008.08.14 Top Level Categories Fix 0.1 release

Download

Installation

  • Copy the `top-level-cats-fix` directory into your `wp-content/plugins` directory
  • Activate the plugin through the ‘Plugins’ menu in WordPress
  • That’s it! :)

Donation

If you liked this plugin, please make a donation via paypal! Any amount is welcome. Your support is much appreciated.

このエントリをはてなブックマークに追加このエントリをdel.icio.usに追加このエントリをLivedoor Clipに追加このエントリをYahoo!ブックマークに追加このエントリをFC2ブックマークに追加このエントリをNifty Clipに追加このエントリをPOOKMARK. Airlinesに追加このエントリをBuzzurl(バザール)に追加このエントリをChoixに追加このエントリをnewsingに追加

« フォトログ、写真アルバムのWordPressテーマ Gentoki
Custom Field Template plugin »

関連記事

Trackback URL

Trackbacks (1)

Comments (10)

query_posts を使用してカテゴリごとに記事数をコントロールしていると
Fatal error: Cannot unset string offsets top-level-cats-fix.php on line 34
とエラーが出てしまいます。

query_posts との併用は難しいでしょうか?
よろしくお願いします。

どうもこんにちは。

少し修正をかけてみましたがどうでしょうか。
Top Level Categories Fix 0.2.1がダウンロード可能です。
query_postsの内容を教えていただければ検証してみたいと思うのですが。

それではよろしくお願いします。

改良ありがとうございました。
しかし、今度は35行目に同じエラーが出てしまいました。
query_postsの内容は以下のようになっています。

query_posts($query_string . "&posts_per_page=3&orderby=modified")

よろしくお願いします。

もう一度修正してみました。
Top Level Categories Fix 0.2.2です。
今度はいかがでしょうか。

よろしくお願いします。

無事動作しました。
本当にありがとうございました。

すいません、Top Level Categories Fixのバグでなく
Top Level Categoriesのバグだと思うのですが
質問させて下さい。

Language Switcher
http://www.poplarware.com/languageplugin.html
というプラグインと併用しています。

このプラグインを使用すると、言語の切り替えのURLに
www.example.com/記事/langswitch_lang/en/
みたいに最後に言語の切り替えの文字が付加されます。

Top Level Categoriesを使用した状態で
カテゴリを表示させると
www.example.com/カテゴリ名/langswitch_lang/en/
www.example.com/カテゴリ名/サブカテゴリ名/langswitch_lang/en/
で両方とも、404エラーが出ます。

Top Level CategoriesとTop Level Categories Fixを両方使用した場合だと
www.example.com/カテゴリ名/langswitch_lang/en/
では404エラーが出まして
www.example.com/カテゴリ名/サブカテゴリ名/langswitch_lang/en/
では正常に表示されました。

/%category%/%postname%.html だと問題はありませんでした。

第一階層のカテゴリだと404エラーが出てしまうのを
Top Level Categories Fixの方で修正するのは可能でしょうか?

お手数ですが、よろしくお願いします。

ニコルさん、どうもこんにちは。

Language SwitcherとTop Level Categoriesの環境を試してみました。Top Level Categories Fixがあろうとなかろうとページナビゲーションが発生すると404となってしまうような感じでした。

Top Level Categories Fix自体がかなり強引な手法で不具合を修正しているので、パーマリンクに影響を与えるプラグインがうまく動作しない場合が多々あるのかもしれません。

さて、どうするかですが以下の部分(51行目あたり)を変更してみてはどうでしょうか。

(変更前)
$query->query[’category_name’] = preg_replace(’/\/page$/’, ”, $qv[’category_name’]);

(変更後)
$query->query[’category_name’] = preg_replace(’/\/langswitch_lang\/[a-z]+|\/page$/’, ”, $qv[’category_name’]);

Language Switcherで使用されるスラッグがデフォルトのlangswitch_langの場合ですが、これでなんとなく動くんじゃないかと思うんですが。(クオテーションマークにご注意ください。)

さすがに個別事象なのでリリースは控えさせていただきます。とりあえず試してみてください。

と書きましたが、これはパーマリンクが/%category%/%post_id%/の場合ですね。/%category%/%postname%/の場合にはニコルさんがおっしゃる通りになるかもしれません。んー、もう一度考え直したいと思います。

/%category%/%post_id%/と/%category%/%postname%/の両方に対応したコードを追加したTop Level Categories Fix 0.2.3をリリースしました。ソースにコメント化された部分があるのでコメントを消して使用してみてください。

うまくいくとよいのですが。それではよろしくどうぞ。

バージョンアップありがとうございました。
うまくいきました。
重ね重ねありがとうございました。

Top Level Categories Fix 0.2.2の
51行目を書き換えたものも、無事動作しました。

Comment