【WordPress】投稿で小カテゴリを選択したら親カテゴリも同時に選択【カテゴリの妙】

WordPress PHP
この記事は約3分で読めます。

このブログのように雑記や買い物についての記事を多く書いていると「記事に合うカテゴリが無いからとりあえずカテゴリを追加して…設定!」みたいな感じでどんどんカテゴリが増えてしまいます。
パソコン画面で見た時に記事右に表示されるカテゴリ一覧もそろそろ整理したい…

あんまりカテゴリが増えてしまうとそれぞれのカテゴリで絞り込んだ時に、「もうちょっと大きな分類で表示できれば!」と思うわけです。
そんな時には細々したカテゴリをまとめるために「親カテゴリ」を設定すると良いですね。
私のブログだと、「Amazon」「百円均一」というカテゴリがあり、これに「買い物」という親カテゴリを追加して設定。
こうすると「親カテゴリ」を選ぶと小カテゴリの「Amazon」と「百円均一」の記事がまとめて表示されます。
便利ー!

後から親カテゴリを設定すると、子カテゴリで絞り込んだ記事一覧ページのURLに親カテゴリのスラッグが追加されますので、カテゴリを追加するタイミングでカテゴリに親子関係を持たせておくのが良いかもです。

親カテゴリが選択されていたほうが良いケース

さて、小カテゴリの選択だけでも問題はなかったりするのですが、「親カテゴリが設定されていた場合に~」といった条件で記事を読み込む等、親カテゴリも設定しておくと後々役に立ったりします。

本当に必要なときだけ使う設定ではあるのですが、管理画面の投稿編集ページで小カテゴリにチェックを入れると親カテゴリにもチェックが入るようにする設定があります。

自動チェックの設定方法

functions.phpファイルに追記します。
※ファイルの編集を行う際は、必ずバックアップをとりましょう!

function cat_parent_check() {
?>
<script>
jQuery(function($) {
  $('#taxonomy-category .children input').change(function() {
    function parentNodes(checked, nodes) {
      parents = nodes.parent().parent().parent().prev().children('input');
      if (parents.length != 0) {
        parents[0].checked = checked;
        parentNodes(checked, parents);
      }
    }
    var checked = $(this).is(':checked');
    $(this).parent().parent().siblings().children('label').children('input').each(function() {
      checked = checked || $(this).is(':checked');
    })
      parentNodes(checked, $(this));
  });
});
</script>
<?php
}
add_action('admin_head-post-new.php', 'cat_parent_check');
add_action('admin_head-post.php', 'cat_parent_check');

親カテゴリは絶対に選択するべきなのか?
この疑問についてはもうちょっと深堀りしてみたいですね。
来年あたりに決着をつけよう。。

コメント

タイトルとURLをコピーしました