カテゴリ一覧の順番を並び替える、一部を非表示する方法 【WordPress】

  • 投稿 : 2014-06-10
  • 更新 : 2015-08-28

まとめ

プラグイン系は、導入して触ってみれば、すぐわかるかと思う。
あと、DB Cache Reloaded Fixと相性悪いような感じなんですが、確信が持てません。

並べ替える系

■プラグインで並べ替える方法
・Category Order
WordPress › Category Order « WordPress Plugins
・My Category Order
WordPress › My Category Order « WordPress Plugins
・Category Order and Taxonomy Terms Order
WordPress › Category Order and Taxonomy Terms Order « WordPress Plugins

上記を使用すると、標準のカテゴリーウィジェットだけでなくて、同様の機能をもつカテゴリー一覧系にも反映されます。

どれもほぼ同じ機能を提供していますが、「Category Order and Taxonomy Terms Order」は、カスタムタクソノミーの順番もサポートしています。

カスタム投稿タイプとカスタムタクソノミーまとめ

■専用のウィジェット(プラグイン)を使う
・AVH Extended Categories Widgets
WordPress › AVH Extended Categories Widgets « WordPress Plugins

AVH Extended Categories Widgetsの使い方 | Z-WP-Memo

■テーマのfunctions.phpを使う方法

カテゴリーの一部を非表示するする系

■専用のウィジェット(プラグイン)を使う
・AVH Extended Categories Widgets
WordPress › AVH Extended Categories Widgets « WordPress Plugins

■テーマのfunctions.phpを使う方法

テーマのfunctions.phpを使う方法

並べ替え

function my_theme_catexcept($cat_args){
    $cat_args['orderby'] = 'ID';
    return $cat_args;
}
add_filter('widget_categories_args', 'my_theme_catexcept',10);

上記で、カテゴリID(番号)順になる。
orderbyに指定できるのは以下の通り。
おそらく、 term_groupを使うと自由に並べ替えれると思う。

orderby
 (文字列) カテゴリーのソート項目。初期値はカテゴリー名でソート。
 有効値:
* ID – カテゴリーID
* name – カテゴリー名のアルファベット順(初期値)
* slug
* count – カテゴリーの投稿数
* term_group
WordPress カテゴリーの並び順の指定 « Dreambirdの日々の技術メモ

特定のカテゴリーを一覧に表示しない

function my_theme_catexcept($cat_args){
    $exclude_id = '45';     // 除外するカテゴリID
    $cat_args['exclude'] = $exclude_id;     // 除外
    return $cat_args;
}
add_filter('widget_categories_args', 'my_theme_catexcept',10);

$exclude_id = '45,50'; のように複数指定することも可能です。

参考:WordPressの「カテゴリー」ウィジェットで特定のカテゴリを非表示にする方法 | IT女子のお気に入りフォルダ

DB Cache Reloaded Fixと相性が悪い?!

・カテゴリーの順番を変更したのに、反映されない
・反映されないのでおかしいと思っていたら、いつの間にか反映されている
・反映されていると思っていたら、いつも間にかもとに戻ってしまっている

カテゴリーの順番を変更しているのに、なぜかうまくいかないという場合で、DB Cache Reloaded Fixを使用している場合は、おそらくDB Cache Reloaded Fixが原因ではないか?と思う。


DB Cache Reloadedのキャッシュフィルタで、wp_termsをキャッシュ対象から外すと問題が解決すると思う。|_terms を追記するだけでOK。

スポンサーリンク