2017年9月28日更新

賢威7のサイドバーにカテゴリ一覧を好きな順序で表示する方法

Thumbnail

今回の記事では、WordPressテーマ: 賢威7 のサイドバーに表示されるカテゴリ一覧のカスタマイズについて紹介したいと思います。

通常のWordPressのカテゴリウィジェットでは、カテゴリ一覧をID順のような指定した順序で並び替えたり、カテゴリの表示件数を制限することが出来ません。

正直どれくらい需要があるのか分かりませんけど、備忘録としても残しておきたいので、今回はカテゴリ一覧を好きな順序で並び替える方法を紹介したいと思います。

カスタマイズ後

↓ ウィジェットではなくPHPコードでカテゴリ一覧を表示(アルファベット順)

category-list-after-2

※ 今回はPHPファイルを編集していきます。管理画面に入れなくなることもあるので、PHPコードは注意して編集して下さい。

1. カテゴリ一覧を表示させる

今回はサイドバーにカテゴリ一覧を表示させたいので、sidebar.php ファイルを編集していきましょう。

親テーマの sidebar.php の85行目付近にある、</aside> というタグの上(画像でハイライトしている部分)が今回編集する箇所です。

(ここでは賢威のバージョン7.0.4 を使用しましたが、お使いのバージョンによって多少行番号などが変わるかもしれません)

sidebar-php-before

ここに以下のコードを追加します。
(カテゴリをアルファベット順で表示)

PHP
コピーする
<?php
$args = array(
'orderby' => 'name',
'order' => 'desc',
);
$terms = get_terms( 'category', $args );
if ( ! empty( $terms ) && ! is_wp_error( $terms ) ) : ?>
<section class="section-wrap widget-conts widget_categories">
<div class="section-in">
<h3 class="section-title">カテゴリ</h3>
<?php
$count = count( $terms );
$i = 0;
$term_list = '<ul><li class="cat-item">';
foreach ( $terms as $term ) {
$i ++;
$term_list .= '<a href="' . get_term_link( $term ) . '" title="' . $term->name . ' の記事一覧を見る">' . $term->name . '</a>';
if ( $count != $i ) {
$term_list .= '</li><li class="cat-item">';
}
else {
$term_list .= '</li>';
}
}
$term_list .= '</ul>';
echo $term_list; ?>
</div>
</section>
<?php endif; ?>

sidebar-php-after

これでカテゴリ一覧が表示されました。

アルファベット順にしたので日本語の順番は置いといて・・・アルファベット、次に日本語という順番で並んでいます。

(もう少し英語のカテゴリを増やしておけばよかった。。)

category-list-after-1

2. カテゴリ一覧を好きな順番に並び替える

先ほどのコードでは、カテゴリ一覧をアルファベット順(A~Zの順)で並べましたが、「アルファベット順」と「A~Zの順番」という順序を決めているのが、以下のコードです。

PHP
コピーする
$args = array(
'orderby' => 'name', // ← 名前で並び替え
'order' => 'asc', // ← 小さいものから大きいものへ
);

例えばスラッグ(カテゴリ名をURLにしたようなもの)で並び替えると、下のようになります。

PHP
コピーする
$args = array(
'orderby' => 'slug', // ← スラッグで並び替え
'order' => 'asc', // ← 小さいものから大きいものへ
);

↓ カテゴリ一覧をスラッグで並び替え

category-list-after-2

投稿の「少ない順(orderの部分がdescになる)」で並び替えるコードは下のようになります。

PHP
コピーする
$args = array(
'orderby' => 'count', // ← 投稿数で並び替え
'order' => 'desc', // ← 大きいものから小さいものへ
);

この他にIDをベースにして並び替えることも出来ます。

PHP
コピーする
$args = array(
'orderby' => 'ID', // ← IDで並び替え
'order' => 'desc', // ← 大きいものから小さいものへ
);

orderby の中に入れる countslug などはどうやって知ったんだ?と思うかもしれませんが、このような情報はほぼ全てWordPressのコーデックスに書いてあります。

WordPressの理解を深めたい!という方は、ぜひ一度コーデックスのページを見ることをオススメします。きっと色々な発見があると思いますよ!

WordPressコーデックス:関数リファレンス get_terms

Copyrights © WebCraftLogAll Rights Reserved.