メニュー

mixitupがきりぎり完成しました。

2016年8月9日 - iwane

明日でとうとう企業実習も最後です。
なんだか、あっという間の13日です。

 

今日はポートフォリオサイトのブラッシュアップ
(というか面倒なのでほったらかしにしていたPHPの記述など)を
ひっしのぱっち仕上げです。

 

(くたびれた)ヒヨっ子にとっての最大の難関は
mixitupのフィルター名をworpressのカテゴリーslugから取ってくる
という、プロからすれば朝飯前の課題でしたが
とうとう完成しましたので、一応こちらに内容を掲載させていただきます。
(自分で自分を褒めたいだけです、すみません)

 

まずmixitupをwordpress上で動かすためにやりたかったことは以下の項目
1.親カテゴリーの名称を自動でとってきてタイトル表示し、
初期では、その親カテゴリーに属する投稿記事だけが並ぶようにする。
2.フィルターは、子カテゴリーで分類するため、親カテゴリに属する子カテの名称とslugを自動で取ってくる。
3.当該記事のdivのclassに(フィルター用に)自動的に子カテ側のslugが入る

mixitup_01

 

1については、一般的なカテゴリ取得なのであまり問題なくといいたいところですが
どうしても配列上ではで親カテが[0]に入っていないものがあるので以下のようなif文で分岐を試みました。

<?php
if ( have_posts() ) :
$cats = get_the_category();//カテゴリー取得
if ( $cats[0]->category_parent == 0){//array[0]が親の場合
$cat_name = $cats[0]->cat_name;//array[0]のカテ名取得
$cat_id=get_cat_ID;//子カテ取得用に親IDを取得
}else{//そうで無い場合
$cat_name = $cats[1]->cat_name;//array[1]のカテ名取得
$cat_id=get_cat_ID;//子カテ取得用に親IDを取得
}
?>
<h2><?php echo $cat_name; ?></h2>
・・・・(endifの閉じは最後に記載)

 

2がけっこう苦労しましたが、画期的なタグを見つけました。
<?php get_term_children(子カテを取得したい親カテのID, ‘category’ ) ?>
です。
プロからすると当然のタグかもしれませんが、
このタグ私が使っていた教科書には記されていなかったので
この便利なタグを使わずに、ずっと親カテと子カテをいじりまわしていました。
これを使うとサクっと子カテIDが取れるので、本当にうれしかったです。
以下はフィルターに入れるときの記述です。

<button class=”filter” data-filter=”all”>全て</button>
//集約フィルターは固定のため最初に記載
<?php
$catChildren = get_term_children(親カテのID(1で取得した$cat_id),’category’);
foreach( $catChildren as $i){//foreachで子カテの数だけ処理
$category = get_category($i);
?>
<button class=”filter” data-filter=”.<?php echo $category->category_nicename; ?>”>
<?php echo $category->cat_name; ?>
</button>
<?php
} //foreachの閉じ
?>

ずっと子カテのIDをうまく取れずにいたので、
この関数を見つけたときは本当にうれしかたです。
でも、「親カテゴリーから子カテゴリーを取得」の検索では
このタグは上位に出てこなかったので
なかなかたどりつくのに時間がかかりました。

 

3は、先日のここのブログに記載したやり方で取得しました。
こうしてうやっと、自動的にmixitupにカテゴリーを分類してくれるページの完成です。
成長まだまだのヒヨっ子にしては、かなりステップアップできたような気がします。
(いや、ほんと気持ちだけですが)

動作の検証作業は本当に大変です。
ネットや本で構文を調べて→検証→不具合があればbugや理論間違いを探すという作業を地道にやらなければなりません。でも、これもやっているうちに、だんだん効率の良い手順を体で覚えてきた感じがします。

学校とは違い、現場では自分でやらなければいけない事ばかりなので、
もっと効率的な調べ方や検証方法などを、企業実習が終わっても
自分で身につけていくよう頑張りたいと思います。