人気記事カルーセルが表示不可になっていたことへの対応

 このブログで使用しているWordPressのテーマ、Cocoonの開発元に要望を出してAmazon商品リンクの価格表示に要望が反映されてひゃっほうと喜んだのは先週書いた記事の通り。

 ところが最新のバージョンを反映させて表示を確認していたら、なんか違和感があるのに気づきました。なにかこう…あるべきものがないというか、なんか表示が少なくない…?と。

 あ、ない!

 カスタマイズしてトップページに表示させていた、人気記事を並べたカルーセルが丸ごと綺麗に表示されなくなっていたのでした。

 さすがにAmazon商品リンクの仕様追加が影響しているとは思えないので、他のアップデート部分が何かかち合ってしまっているんでしょう。
 アップデート内容を詳しく見ると、従来はカテゴリによる関連付けだけだったカルーセルが、「カルーセルをタグで関連付け出来るようにした」となっています。多分これかな。

スポンサーリンク

親テーマの変更部分を確認して、子テーマのfunctions.phpを修正する

 新しいバージョンのtmp/carousel.phpを確認すると、クエリーの制御文字が変わっていました。カテゴリ表示だけでなくタグ指定でカルーセルに表示させる投稿を抽出できるようにした影響でしょう。

 こちらが元々のコードにあるクエリのパラメータ設定箇所。

$args = array(
   'cat' => get_carousel_category_ids(),
   'orderby' => get_carousel_orderby(), //ランダム表示
   'no_found_rows' => true,
   'posts_per_page' => get_carousel_max_count(),
 );

 そしてこちらが現在のバージョンにおけるクエリパラメータの設定箇所。

$args = array(
   'category__in' => get_carousel_category_ids(),
   'tag__in' => get_carousel_tag_ids(),
   'orderby' => get_carousel_orderby(), //ランダム表示
   'no_found_rows' => true,
   'posts_per_page' => get_carousel_max_count(),
 );

 array要素の先頭2つ、カテゴリ抽出を示す’cat’が’category__in’に変わっており、かつタグ抽出を示す’tag__in’という配列要素が追加されています。

 ただこれだと意図しない要素に変わるかもしれないけど、何かしらは表示される気がしてしまいます。でも何にも表示されないんですよね。
 クエリの実行時にエラーが起きて、「何もないから一切表示させないね」とCocoon側で処理されてるのかなあ。

 改造当時と同じ動きになるように、function.phpの記述をちょっと変更。カテゴリ指定とタグ指定のパラメータ部分を配列から削除しておきます。

function set_popular_postargs($args) {
   unset($args['category__in']);  // カテゴリ表示しないので連想配列から指定文字を削除 
   unset($args['tag__in']);       // タグ表示しないので連想配列から指定文字を削除
   $args['orderby'] = 'post__in'; // PV順で並べる

 保存してテスト環境にあげてみると、元の通りに人気記事カルーセルが表示されるように戻っていました。本番環境にも反映させて作業完了です。

スポンサーリンク