特典機能について

一部条件でカルーセルが表示されない | 不具合報告 | Cocoon フォーラム

サイト内検索
運営者(わいひら)は、10月25日から骨の手術のため数週間入院します。その際、フォーラム負担軽減のため登録者のみ書き込めるようを制限をさせていただきます。フォーラム未登録の方はこちらの手順で登録を行ってください。予定としては12月前半まで実施させていただきます。
書き込みの前に以下の3点をご確認ください。
  1. 1つのトピックにつき1つの質問を書き込んでください
  2. 不具合・カスタマイズ対象ページのURLを提示高速化を無効にしてください
  3. 該当部分のキャプチャ・環境情報とともに書き込んでいただけると助かります

何を書き込んだら良いか分からない場合は、以下のテンプレートをコピペしてご利用ください。

不具合・カスタマイズ対象ページのURL:

相談内容:

解決のために試したこと:

※文字だけでは正しく伝わらない可能性があるため、スクショ画像の添付もお願いします。
※高速化設定をしている場合は無効にしてください。
環境情報:

※↑こちらに「Cocoon設定 → テーマ情報」にある「環境情報」を貼り付けてください。

環境情報の取得方法はこちら。
https://wp-cocoon.com/theme-report/
高速化設定を無効にするにはこちら。
https://wp-cocoon.com/theme-trouble/

フォーラム利用ガイドリンク

  1. フォーラムガイドライン
  2. よくある質問と答え(FAQ)
  3. サポート対象外のケース
  4. 原因不明の不具合用トラブルシューティング
  5. トピックにHTMLを貼り付ける方法(推奨ツール:notepad.pw
  6. 真っ白画面でのエラーメッセージの確認方法 
  7. ブラウザ環境チェックツール

フォーラム質問後、問題等が解決した場合は結果を書き込んでいただけると幸いです。同様の問題で調べている方には、結果が一番気になる部分となります。

また、問題の解決に至った場合には、トピック冒頭の「解決済み」リンクをクリックしていただけますと幸いです。

wpForoの解決済みリンク

また、有用な返信があった場合は「いいね!」リンクもご活用ください。返信者の励みになります。

wpForoのいいねリンク

「いいね!」機能はフォーラム登録者のみが利用できる機能です。

CC BY-ND 2.1)準じていれば(リンクを貼っていただければ)転載も自由です。カスタマイズ記事を書く際にコード等をコピペ利用していただいて構いません。

フォーラムの使い方がよくわからない場合は、テストトピックで自由にテストしていただいて構いません。

最近の書き込みはこちら。

詳細なカスタマイズ依頼をするならこちら。

スポンサーリンク
一部条件でカルーセルが表示されない
 
共有:
通知
すべてクリア

[解決済] 一部条件でカルーセルが表示されない


はる
(@haruinoue)
メンバーサイト Moderator
結合: 1年前
投稿: 787
Topic starter  

他の方から「カルーセルが表示されない」とご相談を受けて気が付いた不具合です。

Cocoon設定>カルーセルの「最大表示数」を少なめ(例えば12)に設定し、「表示内容」の「人気記事」にチェックを入れ、「カテゴリー」でいくつかのみにチェックを入れた場合、カルーセルが表示されない場合があります。


「最大表示数」はtmp/carousel.php

$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(),
);

 の他、

$limit = get_carousel_max_count();
$records = get_access_ranking_records($days, $limit);

 で使われています。

最大表示数を12に設定した場合、$recordsの中にはサイト全体から期間中の閲覧数上位12記事のIDが入ります。

そしてその12記事は

$args += array('post__in' => $post_ids);

 でクエリのパラメータに加えられます。

例えば上位12記事が全て「カテゴリーA」に含まれる記事で、カルーセルで表示したいのが「カテゴリーB」であった場合、記事が取得されずカルーセルが表示されません。

13番目に人気の記事が「カテゴリーB」の可能性もあるため、get_access_ranking_recordsで取得する記事の数は「最大表示数」よりも多い必要があるのではないかと思います。


解決策として思い浮かぶのは…

  • $limitの値を固定値で大きくする(今回のご相談では$limitを100に設定して暫定的に対応しました)
  • $limitを設定できるような設定項目を作る
  • get_access_ranking_recordsで記事を取得できているにも関わらず最終的な記事数が最大表示数に満たなければ$limitの数を増やして再試行する
  • カテゴリーの絞り込みは$argsでなくget_access_ranking_recordsの引数の方で行う(ただしタグでの絞り込みはできない)

とかでしょうか…。


あと思ったのは、カルーセルについては「アーカイブに出力しない」の設定が反映されないなと思いました。

アーカイブではないので仕様通りな気もしますが。


わいひら 件のいいね!
わいひら
(@yhira)
メンバーサイト Admin
結合: 4年前
投稿: 12871
わいひら - Facebookわいひら - Twitter
 

とりあえず、$limitを10倍するということで対応していました。
https://github.com/yhira/cocoon/commit/f81a6bd2fc768ad9d23db75a5c0dbf2c39b93a0b#
とはいえ、選択されているカテゴリに人気記事がなければ表示されないことには変わりはないかもしれません。

もとはといえば、category__inとtag__inとpost__inがAND検索されてしまうのが原因ですね…。
OR検索できれば良いのですが、調べた限りではやり方がわかりませんでした。
カテゴリーと、タグだけなら、以下のような感じでOR検索できそうなんですが、post__inも合わせるとなると、ちょっとわかりませんでした。。

$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(),
  'tax_query' => array(
    'relation' => 'OR',
    array(
      'taxonomy' => 'category',
      'field'    => 'id',
      'terms'    => get_carousel_category_ids(),
      'operator' => 'IN',
    ),
    array(
      'taxonomy' => 'post_tag',
      'field'    => 'id',
      'terms'    => get_carousel_tag_ids(),
      'operator' => 'IN',
    ),
  ),
);

はる
(@haruinoue)
メンバーサイト Moderator
結合: 1年前
投稿: 787
Topic starter  

ご対応ありがとうございます。

今回のご相談への対応は$limitを10倍でとりあえず大丈夫そうです。

投稿者:: @haruinoue
  • カテゴリーの絞り込みは$argsでなくget_access_ranking_recordsの引数の方で行う(ただしタグでの絞り込みはできない)

の方向で、

$args = array(
  //category_inを削除
  'tag__in' => get_carousel_tag_ids(),
  'orderby' => get_carousel_orderby(), //ランダム表示
  'no_found_rows' => true,
  'posts_per_page' => get_carousel_max_count(),
);
//人気記事が有効の場合
if ( is_carousel_popular_posts_enable()) {
  $days = get_carousel_popular_posts_count_days();
  $limit = intval(get_carousel_max_count()) * 10;
  $records = get_access_ranking_records($days, $limit, 'post', get_carousel_category_ids());//カテゴリーで絞り込み
  $post_ids = array();
  //取得した投稿IDをセット
  foreach ($records as $post) {
    $post_ids[] = $post->ID; // 配列に追加
  }
  $args += array('post__in' => $post_ids);
} else {
  //人気記事じゃない場合
  $args += array('category__in' => get_carousel_category_ids());
}

 はいかがですか?


わいひら 件のいいね!
わいひら
(@yhira)
メンバーサイト Admin
結合: 4年前
投稿: 12871
わいひら - Facebookわいひら - Twitter
 

なるほど。
そういう引数があるのすら忘れていました。
こちらの方が多く記事がヒットしそうですね。なので、x10 を x5にしておきました。
x10でも良いのですが、最大値が120ということを考えると、少し減らしておきたくて。
https://github.com/yhira/cocoon/commit/fe0331c086d17f43813089d6d711ff3c4901cf51#diff-f6ffb928dd6c9692a0d50de13d6145cedeeda073a906a65703a98baefd13cffeR23


はる 件のいいね!
はる
(@haruinoue)
メンバーサイト Moderator
結合: 1年前
投稿: 787
Topic starter  

ありがとうございます。

前より問題が起こりにくいようになったと思います。


わいひら 件のいいね!
わいひら
(@yhira)
メンバーサイト Admin
結合: 4年前
投稿: 12871
わいひら - Facebookわいひら - Twitter
 

ご確認いただきありがとうございます!


はる 件のいいね!
共有:
スポンサーリンク
SWELLと業務提携しています
WordPressテーマSWELL
わいひらをフォローする
おすすめサーバー(コスパ・バックアップ重視型)

性能も兼ね備えながら安くブログ運営を開始できる点においてのNo.1。
それでいてブログ成長後は、十分すぎるほどのスペックアップ余力も担保されている。

◎安く始められる
◎LiteSpeedを用いた高速サーバー(完全SSD)
◎http/3(高速化プロトコル)に対応
◎東京・大阪でリージョン選択が可能
◎プランのアップ・ダウングレードが自由自在
◎同サービス内でドメイン管理が可能
◎ディスク容量が多い
◎転送量が多い
◎毎日無料バックアップ(14日分)
◎DBは14日以内なら無料自動復旧可能
◎ファイルも14日以内なら無料自動復旧可能
◎アダルト・出会い系サイト可
◎ドメインとサーバー代のチャージ払いが可能
○サーバ引っ越し依頼が可能(有料)

サービス運営期間:3年

1年以上の契約をする場合は、クーポンコード入力でさらに50%割引キャンペーン中!
※BOX2 ~ BOX8プラン契約の場合

クーポンコード:PK4JK4RJ

クーポンの使用方法はこちら

とにかく速い。サイトに表示スピードを求めるならココ。
管理画面がシンプルで使いやすい。

◎nginxを用いた高速サーバー(完全SSD)
◎プランのアップ・ダウングレードが自由自在
◎同サービス内でドメイン管理が可能
◎ディスク容量が多い
◎転送量が多い
○http/2(高速化プロトコル)に対応
◎毎日無料バックアップ(14日分)
◎DBは14日以内なら無料自動復旧可能
◎ファイルも14日以内なら無料自動復旧可能
◎サーバ引っ越しツールあり(無料)
○サーバ引っ越し依頼が可能(有料)
◎ドメインとサーバー代のチャージ払いが可能

サービス運営期間:3年

安定感抜群のサーバーです。あまり急激なアクセス変動がないアフィリエイトサイトに向いています。

◎nginxを用いた高速サーバー(完全SSD)
◎老舗サーバーなので安定感抜群
◎ディスク容量が多い
◎転送量が多い
◎同サービス内でドメイン管理が可能
○http/2(高速化プロトコル)に対応
○毎日無料バックアップ(14日分)
○DBは7日以内なら無料自動復旧可能
×ファイルは有料かつ手動での復旧
×プラン変更でCPUのスペックアップができない
×プラン変更しても即時反映されない
×アダルト・出会い系サイト不可

サービス運営期間:18年

常に新しいことに挑戦しているフロンティア精神あふるるレンタルサーバーです。
LiteSpeedやHTTP/2を日本で初めて導入したサーバー。

◎LiteSpeedを用いた高速サーバー(完全SSD)
◎http/3(高速化プロトコル)に対応
◎プランのアップ・ダウングレードが自由自在
◎同サービス内でドメイン管理が可能
◎転送量が多い
◎ディスク容量が多い
◎毎日無料バックアップ(14日分)
◎DBは14日以内なら無料自動復旧可能
○ファイルは14日以内なら無料復旧可能(※手動)
◎アダルト・出会い系サイト可
◎ドメインとサーバー代のチャージ払いが可能
○サーバ引っ越し依頼が可能(有料)

サービス運営期間:5年

格安な値段で始められる高機能サーバーです。
性能も備えつつ最安ならここ。
ただし少し機能は弱い。

◎LiteSpeedを用いた高速サーバー(完全SSD)
◎激安プランが用意してある
◎値段あたりのスペックが高い(コスパ良し)
◎サーバ引っ越し依頼が可能(無料)
◎アダルト・出会い系サイト可
○http/2(高速化プロトコル)に対応
△プランのアップは可能だがダウンは不可
△毎日自動バックアップ(1日分)
△前日のバックアップからのみ復元できる(無料)

サービス運営期間:5年

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