読者です 読者をやめる 読者になる 読者になる

codes / cipher

文章置き場

サブカテゴリーのみに属する記事を表示させない方法

スポンサーリンク

 Batch Catなどのプラグインを使ってカテゴリーの移動などを行う際、当然ながら記事が多いとカテゴリーで絞り込んで作業をします。
 ですがWordpressは仕様上、カテゴリーに階層構造があると、サブカテゴリーのみに記事が属する場合でも親カテゴリーを選択した時にその記事が表示されるようになっています。

 サイトの表側(皆に見せる側)ではこれで良いと思うのですが、今回の様に大量の記事を細かく仕分けしている時には厄介な仕様です。そこでなんとかならないかと調べた所、Wordpressの公式フォーラムにて有用な情報を発見しました。

トピック: サブカテゴリ以下の記事タイトルを表示しない « サポートフォーラム — WordPress

 ですが私の場合は少し違って、管理画面のみでサブカテゴリーの記事を除外したいので、以下の様に少し改造させていただきました。

<?php
function my_category_children($return){
    return array();
}
if(is_admin()){
    add_filter('pre_option_category_children','my_category_children');
}
?>

 これをfunction.phpに追記すると、投稿一覧画面及びBatch Catなどのプラグインでカテゴリーによる絞り込みをした時にサブカテゴリーが除外されるようになります。サイトの表側や、投稿編集画面のカテゴリ選択部分はそのままです。

 しかし、カテゴリー一覧画面でも階層構造が失われてしまい、利便性が落ちてしまうのでさらに以下の様に変更。

<?php
function my_category_children($return){
    if(!strstr($_SERVER["REQUEST_URI"],'edit-tags')){
        return array();
    }
}
if(is_admin()){
    add_filter('pre_option_category_children','my_category_children');
}
?>

 URLからカテゴリー一覧ページかどうかを判断して、そうであれば処理を行わないようにしました。

 こうする事で非常に整理しやすくなったのですが、心なしか管理画面の処理速度が遅くなった気がするので、不要になったら削除した方が良いかもしれません。