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.
![WordPress逆引きデザイン事典[2.X対応]](http://ecx.images-amazon.com/images/I/51wvZ9nbUSL._SL160_.jpg)








![コンテンツマネジメント パーフェクトガイド 基本・計画編 [DESIGN IT!BOOKS] (DESIGN IT!BOOKS)](http://ecx.images-amazon.com/images/I/41QpgDmTedL._SL160_.jpg)
![コンテンツマネジメント パーフェクトガイド デザイン・構築編 ~CMSによるコンテンツ管理の実践~ [DESIGN IT!BOOKS] (DESIGN IT!BOOKS)](http://ecx.images-amazon.com/images/I/41U7NAF%2BxjL._SL160_.jpg)

query_posts を使用してカテゴリごとに記事数をコントロールしていると
Fatal error: Cannot unset string offsets top-level-cats-fix.php on line 34
とエラーが出てしまいます。
query_posts との併用は難しいでしょうか?
よろしくお願いします。
Posted at 2008.08.17 10:56 pm by ニコル
どうもこんにちは。
少し修正をかけてみましたがどうでしょうか。
Top Level Categories Fix 0.2.1がダウンロード可能です。
query_postsの内容を教えていただければ検証してみたいと思うのですが。
それではよろしくお願いします。
Posted at 2008.08.17 11:47 pm by Wordpress Go Go
改良ありがとうございました。
しかし、今度は35行目に同じエラーが出てしまいました。
query_postsの内容は以下のようになっています。
query_posts($query_string . "&posts_per_page=3&orderby=modified")
よろしくお願いします。
Posted at 2008.08.18 2:13 am by ニコル
もう一度修正してみました。
Top Level Categories Fix 0.2.2です。
今度はいかがでしょうか。
よろしくお願いします。
Posted at 2008.08.18 9:42 am by Wordpress Go Go
無事動作しました。
本当にありがとうございました。
Posted at 2008.08.18 11:04 am by ニコル
すいません、Top Level Categories Fixのバグでなく
Top Level Categoriesのバグだと思うのですが
質問させて下さい。
Language Switcher
http://www.poplarware.com/languageplugin.html
というプラグインと併用しています。
このプラグインを使用すると、言語の切り替えのURLに
http://www.example.com/記事/langswitch_lang/en/
みたいに最後に言語の切り替えの文字が付加されます。
Top Level Categoriesを使用した状態で
カテゴリを表示させると
http://www.example.com/カテゴリ名/langswitch_lang/en/
http://www.example.com/カテゴリ名/サブカテゴリ名/langswitch_lang/en/
で両方とも、404エラーが出ます。
Top Level CategoriesとTop Level Categories Fixを両方使用した場合だと
http://www.example.com/カテゴリ名/langswitch_lang/en/
では404エラーが出まして
http://www.example.com/カテゴリ名/サブカテゴリ名/langswitch_lang/en/
では正常に表示されました。
/%category%/%postname%.html だと問題はありませんでした。
第一階層のカテゴリだと404エラーが出てしまうのを
Top Level Categories Fixの方で修正するのは可能でしょうか?
お手数ですが、よろしくお願いします。
Posted at 2008.08.25 1:40 pm by ニコル
ニコルさん、どうもこんにちは。
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の場合ですが、これでなんとなく動くんじゃないかと思うんですが。(クオテーションマークにご注意ください。)
さすがに個別事象なのでリリースは控えさせていただきます。とりあえず試してみてください。
Posted at 2008.08.25 5:47 pm by Wordpress Go Go
と書きましたが、これはパーマリンクが/%category%/%post_id%/の場合ですね。/%category%/%postname%/の場合にはニコルさんがおっしゃる通りになるかもしれません。んー、もう一度考え直したいと思います。
Posted at 2008.08.25 5:53 pm by Wordpress Go Go
/%category%/%post_id%/と/%category%/%postname%/の両方に対応したコードを追加したTop Level Categories Fix 0.2.3をリリースしました。ソースにコメント化された部分があるのでコメントを消して使用してみてください。
うまくいくとよいのですが。それではよろしくどうぞ。
Posted at 2008.08.25 7:05 pm by Wordpress Go Go
バージョンアップありがとうございました。
うまくいきました。
重ね重ねありがとうございました。
Top Level Categories Fix 0.2.2の
51行目を書き換えたものも、無事動作しました。
Posted at 2008.08.25 10:45 pm by ニコル