Cocoonフォーラム

サイト内検索
書き込みの前に以下の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. ブラウザ環境チェックツール
  8. Cocoonカスタマイズ依頼

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

フロントページが「タブ一覧」「カテゴリ...
 
共有:
通知
すべてクリア

[解決済] フロントページが「タブ一覧」「カテゴリーごと」のとき、除外カテゴリーの投稿が除外されない

19 投稿
3 ユーザー
22 Reactions
190 表示
大門未知子
(@chu-ya)
Illustrious Member Registered
結合: 3年前
投稿: 3477
トピックスターター  

----------------------------------------------
テーマ名:Cocoon
バージョン:2.8.5.3
カテゴリー数:18
タグ数:122
ユーザー数:1
----------------------------------------------
●投稿

投稿タイトル「日記、コーヒー」に、カテゴリー「日記」「コーヒー」を設定した。


●Cocoon設定

[インデックス]
→表示カテゴリー「コヒー」
→除外カテゴリー「日記


●現象

フロントページタイプが「タブ一覧」、「カテゴリーごと」のとき
新着記事から投稿タイトル「日記、コーヒー」は表示されない。

しかし「コーヒー」タブ、カテゴリーには表示される。★バグ

さらに、「もっと見る」ボタンをクリックし、カテゴリーページ「コーヒー」には投稿タイトル「日記、コーヒー」は表示されない。


●原因

以下で、新着記事以外は常に$categoriesに値が入るため、常にfalseとなり、除外カテゴリーが設定されない。

https://github.com/xserver-inc/cocoon/blob/2cee2d2734cf53bca8745a180634d76d85ff91e3/lib/page-settings/index-funcs.php#L345


対策

!$categoriesを削除。

https://github.com/xserver-inc/cocoon/blob/2cee2d2734cf53bca8745a180634d76d85ff91e3/lib/page-settings/index-funcs.php#L345


●フロントページが上記以外の場合

フロントページ「一覧(デフォルト)」「新着記事」とカテゴリーページは、メインクリーから除外される。

https://github.com/xserver-inc/cocoon/blob/2cee2d2734cf53bca8745a180634d76d85ff91e3/functions.php#L253-L290

また、「カテゴリーごと(2カラム)」「カテゴリーごと(3カラム)」はnew_listを代用して出力しており、除外カテゴリーを反映している。

https://github.com/xserver-inc/cocoon/blob/2cee2d2734cf53bca8745a180634d76d85ff91e3/lib/html-forms.php#L1228-L1233


エックスサーバー 高澤
(@s_takazawa)
Trusted Member Moderator
結合: 6か月前
投稿: 39
 

@chu-ya さん

 

お世話になっております。

上記に関して、ありがとうございます。

内容を確認し対応いたしますので、少々お待ちいただけましたら幸いです。

この投稿は3週間前ずつエックスサーバー 高澤に変更されました

   
わいひら reacted
エックスサーバー 高澤
(@s_takazawa)
Trusted Member Moderator
結合: 6か月前
投稿: 39
 

わいひら(@yhira)さん

 

お疲れ様です。

本件に関して対応が完了しましたので、お手すきでPRのご確認をお願いいたします。

 

【対応内容】

  • tmp\list-tab-index.phpの44行目付近の「for ($i=0; $i < count($cat_ids) && $i < $cat_count; $i++):」内のクエリパラメーターにて、「'category__not_in' => get_archive_exclude_category_ids(),」を追加
  • <?php else: ?><h2>NOT FOUND</h2><p>投稿が見つかりませんでした。</p>」を追加
  • lib\page-settings\index-funcs.phpのget_category_index_list_entry_card_tag()関数の「//カテゴリーの除外」のif文の「!$categories &&」を削除
  • 「カテゴリーごと」「2カラム」「3カラム」の場合にNOT FOUND時に「もっと見る」ボタンが表示しないように修正

 

【PR】
https://github.com/xserver-inc/cocoon/pull/268


   
わいひら reacted
エックスサーバー 高澤
(@s_takazawa)
Trusted Member Moderator
結合: 6か月前
投稿: 39
 

@chu-ya さん

 

大変お待たせいたしました。

本件関して、該当部分を修正いたしましたことをご報告いたします。

 

ソースコードの方もご参考にさせていただきました、ご教示いただきありがとうございました!

よろしくお願いいたします。

この投稿は3週間前ずつエックスサーバー 高澤に変更されました

   
エックスサーバー 高澤
(@s_takazawa)
Trusted Member Moderator
結合: 6か月前
投稿: 39
 

@yhira さん

 

PRに関してご確認いただきありがとうございます!

引き続き、よろしくお願いいたします。


   
大門未知子
(@chu-ya)
Illustrious Member Registered
結合: 3年前
投稿: 3477
トピックスターター  

@s_takazawa さん

コードを確認しましたが、疑問があり見直し願います。

投稿数のキーで'count_' . $loop_indexとしている部分がありますが、countでいいのでは?
分ける必要ありますか?


●tmp/list-category-columns.php

並列処理されないため、$unique_count_keyでキーを分けることなくcountでよく。

https://github.com/xserver-inc/cocoon/blob/bf5f121074058b94645dc41784f1bc8982504c33/tmp/list-category-columns.php#L87-L88


●tmp/list-tab-index.php

以前のソースから書かれているが不要では。

https://github.com/xserver-inc/cocoon/blob/bf5f121074058b94645dc41784f1bc8982504c33/tmp/list-tab-index.php#L82


●lib/html-forms.php

$loop_indexは不要。

https://github.com/xserver-inc/cocoon/blob/bf5f121074058b94645dc41784f1bc8982504c33/lib/html-forms.php#L1163

不要。

https://github.com/xserver-inc/cocoon/blob/bf5f121074058b94645dc41784f1bc8982504c33/lib/html-forms.php#L1347-L1348

'count'を渡せばよく。

https://github.com/xserver-inc/cocoon/blob/bf5f121074058b94645dc41784f1bc8982504c33/lib/html-forms.php#L1377

https://github.com/xserver-inc/cocoon/blob/bf5f121074058b94645dc41784f1bc8982504c33/lib/html-forms.php#L1382

 


エックスサーバー 高澤
(@s_takazawa)
Trusted Member Moderator
結合: 6か月前
投稿: 39
 

ご指摘いただきありがとうございます!

修正すべき箇所がありそうで、@chu-ya さんの方でご教示いただいた箇所を含めて、まず今一度見直してみようとおもいます。

この投稿は3週間前 2回ずつエックスサーバー 高澤に変更されました

   
わいひら reacted
エックスサーバー 高澤
(@s_takazawa)
Trusted Member Moderator
結合: 6か月前
投稿: 39
 

@chu-ya さん

 

インデックスとして処理した件について、おまとめいたしました。

説明に不備がありましたら申し訳ありません。

インデックスとした理由を現象ベースでご説明すると、仮に「count」で渡した場合、例えば前提として「フロントページタイプ」で「カテゴリーごと(2カラム)」を設定し、「カラムA」では出力ページ数が0、「カラムB」では1以上とします。

「カラムA」は「もっと見る」ボタンを非表示とすべきですが、「カラムB」にも「0」が反映されてしまい「もっと見る」ボタンが非表示になってしまう、という現象が起こってしまうため、解決策としてインデックス(count_【一意なID】)とさせていただきました。

(countとすると、例えばカラムAに対して「0」が送られた場合、カラムBにも「0」が送られてしまうというイメージです)

コード的には、各カラムごとに「記事数」を渡してif文による条件分岐したかったため、インデックス処理をしたという背景になります。

 

私としてもベストなソースコードにできればと思いますため、必要があれば修正できればと思います。

この投稿は3週間前 3回ずつエックスサーバー 高澤に変更されました

   
わいひら reacted
エックスサーバー 高澤
(@s_takazawa)
Trusted Member Moderator
結合: 6か月前
投稿: 39
 

また、一旦上記の実装のままとした場合、現状記事数が正しく処理されず、添付画像のよに出力ページが1の場合に「もっと見る」ボタンが出力されない不具合が起こっておりました。

 

lib\html-forms.phpでのset_query_var()関数での「$count++」の位置が正しくなかったため、こちら修正できればとおもいます。

この投稿は3週間前 2回ずつエックスサーバー 高澤に変更されました

   
わいひら reacted
大門未知子
(@chu-ya)
Illustrious Member Registered
結合: 3年前
投稿: 3477
トピックスターター  

投稿者:: @s_takazawa

「カラムA」は「もっと見る」ボタンを非表示とすべきですが、「カラムB」にも「0」が反映されてしまい「もっと見る」ボタンが非表示になってしまう、という現象が起こってしまうため、解決策としてインデックス(count_【一意なID】)とさせていただきました。

現象となる根本原因が曖昧で捉えてるのは問題です。以下が根本ですよね?

lib\html-forms.phpでのset_query_var()関数での「$count++」の位置が正しくなかったため

generate_widget_entries_tagはカラムA、カラムBごとに処理される。
カラムAのときget_query_var('count')=0となり、「もっと見る」ボタンは非表示。
カラムBのときget_query_var('count')>0で返却され、「もっと見る」ボタンは表示されると思いますが?

処理はシーケンシャルなので、キーを分ける必要はないです。

再度、見直し願います。

例えばmglobal変数を用いるのと同じで、global $HAS_POSTS = true/falseでカテゴリーに判定するのと同じです。

 


エックスサーバー 高澤
(@s_takazawa)
Trusted Member Moderator
結合: 6か月前
投稿: 39
 

@chu-ya さん

 

ご教示いただきありがとうございます、再度見直し致しました。

インデックスとしない方が追加のコードの記述量や可読性や保守性など考えてこちらがベストかと思いますので、修正できればと思います🙇

この投稿は3週間前 2回ずつエックスサーバー 高澤に変更されました

   
わいひら reacted
エックスサーバー 高澤
(@s_takazawa)
Trusted Member Moderator
結合: 6か月前
投稿: 39
 

@yhira

わいひら さん

お疲れ様です。
たびたび申し訳ありません。

本件に関して、PR内容に不具合が見られたため、以下新規PRにてご対応いたしましたのでご報告いたします。

https://github.com/xserver-inc/cocoon/pull/270

 

対応内容としては、以下になります。
  • 「もっと見る」ボタンの表示の不具合の修正
  • カラムごとの「もっと見る」ボタン表示の処理のインデックスを利用している箇所をリファクタリング

お手数おかけしてしまい恐縮ですが、お手すきでご確認お願いいたします。


   
わいひら reacted
わいひら
(@yhira)
Illustrious Memberサイト Admin
結合: 7年前
投稿: 17716
 

僕が気づかず申し訳ないです。
修正をマージさせていただきました。


大門未知子
(@chu-ya)
Illustrious Member Registered
結合: 3年前
投稿: 3477
トピックスターター  

わざわざ$current_countに代入しなくてもif文でset_query_var('count')を参照すればよく。
修正してください。

https://github.com/xserver-inc/cocoon/blob/ed12da13ac0d6f590b354061b22731eb6d6c50be/tmp/list-category-columns.php#L87-L90


大門未知子
(@chu-ya)
Illustrious Member Registered
結合: 3年前
投稿: 3477
トピックスターター  

@yhira さん

わざわざ$current_countに代入しなくてもif文でset_query_var('count')を参照すればよく。
修正してください。

https://github.com/xserver-inc/cocoon/blob/ed12da13ac0d6f590b354061b22731eb6d6c50be/tmp/list-category-columns.php#L87-L90


エックスサーバー 高澤
(@s_takazawa)
Trusted Member Moderator
結合: 6か月前
投稿: 39
 

@chu-ya さん

私の方から失礼します。
@chu-ya さんのおっしゃる通り、現状get_query_varを使いまわす予定はないのと、変数を使うとわずかにメモリを消費するため、変数が無い形がベストでしたね...。

こちらご対応いたします。

@yhira さん

わいひらさん、本当に度々申し訳ありません、PRの方ご確認いただきありがとうございました🙇


   
わいひら
(@yhira)
Illustrious Memberサイト Admin
結合: 7年前
投稿: 17716
 

ご指摘ありがとうございます。
高澤さんが修正してくださったので、プルリクエストをマージしておきました。


大門未知子
(@chu-ya)
Illustrious Member Registered
結合: 3年前
投稿: 3477
トピックスターター  

----------------------------------------------
テーマ名:Cocoon
バージョン:2.8.5.3
カテゴリー数:20
タグ数:123
ユーザー数:1
----------------------------------------------
対策されていることを確認しました。
本件をクローズとします。


現状get_query_varを使いまわす予定はないのと、変数を使うとわずかにメモリを消費するため、変数が無い形がベストでしたね

折角、ゼロ件データーの仕様ミスを見つけたのはいいですが、もう少し丁寧に作業してください。
手戻りが多くありませんか?

私の実務での時間単価はクソ高いですので笑。


エックスサーバー 高澤
(@s_takazawa)
Trusted Member Moderator
結合: 6か月前
投稿: 39
 

@chu-ya さん

 

ご確認ありがとうございます。

今回対応するにあたって個人的な課題も見えました。

@chu-ya さんのお言葉、肝に銘じます。


   
わいひら reacted
共有:

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

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

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

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

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

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

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

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