チェ・ゲバムラの日記

脱犬の道を目指す男のブログ

【WP】カテゴリの順番を自由に変更して出力する方法~PHP配列で並べ替え~

Wordpressでカテゴリを入力して投稿記事を出すってのは良くある。

と同時にカテゴリも出力したいとかってこともよくある。

その時にそのまま出すと名前順?みたいになってとてもよろしくない。

プラグインを使うのが標準とかいう記事が多いが、なるべく使いたくない。

かといってベタうちだととてもナンセンスだしミスも多くなりそう。

 

てことでPHP側で配列に入れて順番を制御することにした。

東京23区とかを例にする。

 

<?php //順番を定義
$senkyoku = array('chiyoda','chuo','minato','shinjuku','bunkyo','taitou','sumida','koutou','shinagawa','meguro','oota','setagaya','shibuya','nakano','suginami','toshima','kita','arakawa','itabashi','nerima','adachi','katsushika','edogawa');//23区の表示する順番をカテゴリスラッグで定義

$senkyokuN = array('千代田区','中央区','港区','新宿区','文京区
','台東区','墨田区','江東区','品川区','目黒区','大田区','世田谷区','渋谷区','中>野区','杉並区','豊島区','北区','荒川区','板橋区','練馬区','足立区','葛飾区','江戸川区');//23区の表示する順番をカテゴリスラッグで定義

$datas = array($senkyokuN,$senkyoku_flg); //日本語の配列と、空
の配列を二次元配列として設定
?>

 

 

<?php //WP管理画面から出力されるカテゴリは順番が決められないので上で定義した配列
の順番に下記変えて出力する
for($i=0; $i<count($senkyokuN);$i++){ //$senkyokuNの分だけ繰り返す
if(have_posts()): while(have_posts()): the_post(); //投稿記事ループ開始
$category = get_the_category();
$cat_name = $category[0]->cat_name; //カテゴリー名を取得
$cat_slug = $category[0]->category_nicename; //スラッグ名を取得

if($datas[0][$i] == $cat_name){ //投稿記事のカテゴリー名とデータが一致したら>データが存在する判別のフラグを立てる
$datas[1][$i] = 1;
}
endwhile; endif; //ループ終了
}
for($i=0; $i<count($senkyokuN);$i++){
if($datas[1][$i]== 1){
echo '<div class="area ok">' .$datas[0][$i]. '</div>';
}else{
echo '<div class="area">' .$datas[0][$i]. '</div>';
}
}
?>

 

あとはクラスokの場合だったら黒にして

elseならグレーとかにしておくとか。

いろいろと使いどころが多そう。