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カスタマイズ依頼

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

投稿のカテゴリーと異なる投稿が関連記事...
 
共有:
通知
すべてクリア

[解決済] 投稿のカテゴリーと異なる投稿が関連記事に表示された

9 投稿
2 ユーザー
5 Reactions
151 表示
大門未知子
(@chu-ya)
Illustrious Member Registered
結合: 3年前
投稿: 3813
トピックスターター  

----------------------------------------------
テーマ名:Cocoon
バージョン:2.8.7.2
カテゴリー数:16
タグ数:13
ユーザー数:1
----------------------------------------------

●前提条件

投稿にカテゴリーID=xxxだけを割り当てた。
カテゴリーID=xxxはこの投稿の1件しかない。


●現象

[Cocoon設定]→[投稿]→関連性「カテゴリー」とした。
このとき、関連記事には、カテゴリーに関係ない投稿が表示される。

なお、「タグ」とした場合、投稿に割り当てたタグID=xxxが1件しかない場合、「関連記事は見つかりませんでした。」と表示される。


●原因

以下でカテゴリーが登録されない。
カテゴリーの投稿数-1カテゴリーの投稿数が0未満の場合、カテゴリーを設定しない。

https://github.com/xserver-inc/cocoon/blob/d5d8953601d039be4dfc818016cced9a04777b21/lib/related-entries.php#L79-L83

このため、wp_queryのパラメータでcategory__inが空となる。
結果、全投稿が対象となり、関係ない投稿が表示された。

array(6) {
  ["post_type"]      => string(4) "post"
  ["post__not_in"]   => array(1) {
    [0]              => int(49422)
  }
  ["posts_per_page"] => int(4)
  ["orderby"]        => string(4) "rand"
  ["no_found_rows"]  => bool(true)
  ["category__in"]   => array(0) {
  }
}


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

ご指摘ありがとうございます。

僕の環境で「投稿A」を作成後新たに「カテゴリーB」と「タグC」を作成しました。
そして、「カテゴリーB」と「タグC」に対して、「投稿A」だけを登録した状態にして、テストしてみました。

僕の環境では、[Cocoon設定]→[投稿]→関連性で「カテゴリー」と「タグ」いずれを選択しても関連記事には、「関連記事は見つかりませんでした。」と表示されるようです。



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

@yhira さん

条件が違います。
投稿Aに、カテゴリーBだけを付与してください。タグCは不要です。


[Cocoon設定]→[投稿]→関連性「カテゴリー

以下での$argsの値でなぜcategory__inでないのか?

https://github.com/xserver-inc/cocoon/blob/d5d8953601d039be4dfc818016cced9a04777b21/tmp/related-list.php#L12

カテゴリーB
[06-Sep-2025 15:01:20 UTC] Array
(
    [post_type] => post
    [post__not_in] => Array
        (
            [0] => 70326
        )

    [posts_per_page] => 6
    [orderby] => rand
    [no_found_rows] => 1
    [tag__in] => Array★タグで絞り込んでいるが、本来、カテゴリーAで絞り込むのでは?
        (
        )

)

カテゴリーB,タグC
[06-Sep-2025 15:04:02 UTC] Array
(
    [post_type] => post
    [post__not_in] => Array
        (
            [0] => 70326
        )

    [posts_per_page] => 6
    [orderby] => rand
    [no_found_rows] => 1
    [tag__in] => Array★タグがあると、投稿Aを除外しタグCで絞り込むため、関連記事なしとなる。
        (
            [0] => 664
        )

)



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

●発生のアルゴリズム

tmp/related-list.php

関連記事取得用のWP_Queryパラメータを設定する。get_related_wp_query_args

lib/related-entries.php

関数get_related_wp_query_argsで
関数get_the_category_ids、関数get_the_tag_idsを呼び、関連性に応じ
category__in、tag__inを設定

戻る際、フックによりget_additional_related_wp_query_argsが呼ばれる。

関数get_additional_related_wp_query_argsでcategory__inが無いのでtag__inが設定を設定するが、カテゴリーBのみなので空なる。


●問題点

https://github.com/xserver-inc/cocoon/blob/d598036feb5f1441c967cc8619061ce42d2e1c24/lib/related-entries.php#L76-L89

先にも指摘してますが以下なのでは?

function get_the_category_ids($post_id){
  $categories = get_the_category($post_id);
  $category_IDs = array();

  foreach($categories as $category):
    array_push( $category_IDs, $category->cat_ID);
  endforeach ;

  return $category_IDs;
}


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

●追記

上記のあと調査したら、なぜtag__inになるのかと思ったら、Cocoon設定に書いてありました。

やはり、get_the_category_idsでカテゴリーBがあるのに、category__inを設定していないことが原因です。



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

画像添付します。タグ一覧のタグCは投稿Aだけに割り当てた場合を示すます。



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

詳しい説明をありがとうございます!
すいません。設定状態を勘違いしておりました。
カテゴリ1つで投稿1つ、かつタグが設定されていない場合、「関連記事は見つかりませんでした。」となるように修正しておきました。
https://github.com/xserver-inc/cocoon/commit/c51d69e1e317d8c3a20f46cf5474531b1c58aa5a
おっしゃる通り-1は不要ですね。



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

----------------------------------------------
テーマ名:Cocoon
バージョン:2.8.7.2
カテゴリー数:18
タグ数:124
ユーザー数:1
----------------------------------------------

修正されていることを確認しました。
本件をクローズとします。



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

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



   
共有:

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

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

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

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

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

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

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

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