「NAGI」スキン適用中

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

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

人気記事一覧ショートコードpopula...
 
共有:
通知
すべてクリア

[解決済] 人気記事一覧ショートコードpopular_listに snippet=1を指定してもスニペットが表示されない

7 投稿
3 ユーザー
10 Reactions
72 表示
(@lovagelab)
Active Member Registered
結合: 3週間前
投稿: 3
Topic starter  

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

テスト用固定ページ(解決後に削除予定)
https://lovagelab.com/test20240824/

◆相談内容:

人気記事一覧ショートコード[popular_list snippet=1]を記述してもスニペットが表示されませんでした。
いろいろ画策しましたが解決方法がわからずこちらに質問させていただくことにいたしました。
ご教示よろしくお願いいたします。

上述のテスト用固定ページのWordPressのソースは以下の通りです。

<h2>[[popular_list snippet=1]]</h2>
[popular_list snippet=1]
<h2>[[new_list snippet=1]]</h2>
[new_list snippet=1]
<h2>[[new_list snippet=1 cats="95"]]</h2>
[new_list snippet=1 cats="95"]
<h2>[[popular_list_test snippet=1]]</h2>
<pre>isset($post->post_content)
を
isset(get_post($post->ID)->post_content)
に変更したもの
</pre>
[popular_list_test snippet=1]

 

◆不具合の発生手順:

[popular_list snippet=1]を使用すると常に発生(スニペットが常時表示されない)

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

<チェック項目>

  • Googleとフォーラムにて検索済み。
  • 最新版Cocoonで試し済み。
  • 「Health Check & Troubleshooting」プラグインにて
    「トラブルシューティングモード:有効」&「利用可能なテーマ:Cocoon」として
    テスト用固定ページにて再現を確認済み
    (new_listではスニペットが表示されるがpopular_listでは表示されない)。
  • ブラウザのキャッシュ、Cookieを削除して確認済み。
  • 縮小化機能を無効済み。

<確認したこと(1)>

  • [popular_list snippet=1]でスニペットが表示されない投稿記事でも[new_list snippet=1 cats="95"]にて表示された同一記事ではスニペットが表示される。
    • 自身Webサイト上(Cocoon 2.7.6)の固定ページにて確認。
    • テスト用固定ページ参照。

<確認したこと(2)>

#下記行数(自身WebサイトのCocoon 2.7.6の実コード)は
#2024/08/24時点でのGitHub上のmasterのコードの行数と一致していることを確認済み。

  • lib/html-forms.phpのgenerate_popular_entries_tag関数において、
    該関数にsnippet=1が渡ってきていても、
    L1081のif文のisset($post->post_content)が偽となっているため、
    L1082の$snippet_tagの代入が処理されない。
    • 自身Webサイトを構成しているCocoon 2.7.6の実コードである
      lib/shortcodes.phpのpopular_listに関するコードと
      lib/html-forms.phpのgenerate_popular_entries_tag関数をコピーして
      別関数として定義&add_shortcodeしプラグインCode Snippetsにて実装後、
      新規定義したgenerate_popular_entries_tag_test関数に
      echo文を挿入してL1081のif文内の各値を表示させて確認。
    • テスト用固定ページをブラウズした際のページのソース参照
      (「*TEST*」という文字列を挿入してあります)。
  • L1081の「if ($snippet && …」とL1083の該if文のスコープ終端の「}」をコメントアウトし、
    L1082の「$snippet_tag = …」を無条件に処理させるとスニペットが表示される。
    • 同上のgenerate_popular_entries_tag_test関数にて確認。
  • L1081の「if ($snippet && …」の「$post->post_content」を
    「get_post($post->ID)->post_content」に変更するとスニペットが表示される。
    • 同上のgenerate_popular_entries_tag_test関数にて確認。
    • 下記のコミット内容を参考にしましたが、この箇所をこのように置換することがコードの意図や文法的に正しいか否かわかっていません。

<確認したこと(3)>

  • GitHubのlib/html-forms.phpの
    「人気記事ウィジェットレコードを取得時、本文を保存しないように変更」のコミット
    https://github.com/xserver-inc/cocoon/commit/95bf4ddeb0860f965c8c056b1e949b58634f50a5

    L1082のget_the_snippet()の第1引数が
    「$post->post_content」から「get_post($post->ID)->post_content」に変更されているが、
    L1081のif文の「$post->post_content」はそのままとなっている。
    • GitHub上のmasterのコードにて確認。
    • この箇所が仕様なのか不具合なのか自身では判断が付きませんでした。

 

◆環境情報:
----------------------------------------------
サイト名:LOVAGE LAB - らびっじ・らぼ
サイトURL: https://lovagelab.com/wp
ホームURL: https://lovagelab.com
コンテンツURL:/wp/wp-content
インクルードURL:/wp/wp-includes/
テンプレートURL:/wp/wp-content/themes/cocoon-master
スタイルシートURL:/wp/wp-content/themes/cocoon-child-master
親テーマスタイル:/wp/wp-content/themes/cocoon-master/style.css
子テーマスタイル:/wp/wp-content/themes/cocoon-child-master/style.css
WordPressバージョン:6.6.1
PHPバージョン:7.4.33
ブラウザ:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36
サーバーソフト:Apache
サーバープロトコル:HTTP/2.0
エンコーディング:gzip, deflate, br, zstd
言語:ja,en;q=0.9,en-US;q=0.8
----------------------------------------------
テーマ名:Cocoon
バージョン:2.7.6
カテゴリー数:20
タグ数:74
ユーザー数:1
----------------------------------------------
子テーマ名:Cocoon Child
バージョン:1.1.0
style.cssサイズ:16855 バイト
functions.phpサイズ:1053 バイト
----------------------------------------------
Gutenberg:1
Font Awesome:5
Auto Post Thumbnail:0
Retina:0
ホームイメージ:/wp/wp-content/uploads/2021/05/lovage.png
----------------------------------------------
ブラウザキャッシュ有効化:0
HTML縮小化:0
CSS縮小化:0
JavaScript縮小化:0
Lazy Load:0
----------------------------------------------
利用中のプラグイン:
AddQuicktag 2.6.1
Advanced Editor Tools 5.9.2
Better Search Replace 1.4.7
Category Order and Taxonomy Terms Order 1.8.2
Classic Editor 1.6.4
Code Snippets 3.6.5.1
Contact Form 7 5.9.8
Download Monitor 5.0.4
Enlighter - Customizable Syntax Highlighter 4.6.1
FileBird Lite 6.3.2
footnotes 2.7.3
No Right Click Images 4.0
Post Snippets (free) 4.0.6
Revision Control 2.3.2
Search Regex 3.1.0
Table of Contents Plus 2408
WP SVG Icons 3.2.3
XML Sitemap Generator for Google 4.1.21
Yoast Duplicate Post 4.5
----------------------------------------------

This topic was modified 3週間前 2回 by LOVAGE LAB

   
わいひら and chu-ya reacted
chu-ya
(@chu-ya)
Famed Member Registered
結合: 2年前
投稿: 2629
 

指摘の通り、人気記事のスニペットが出力されません。

●人気記事スニペットについて

以下で人気記事ショートコードにスニペット出力のパラメータを追加した。

https://wp-cocoon.com/community/postid/72073/


●原因

isset($post->post_content)が、常にfalseとなる。
この為、スニペットが出力されない。

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


●バグ作り込み

人気記事のスニペットもDB登録していた。
記事が多いとメモリ不足となる指摘があり。
以下で修正し、スニペットを登録するのを止めた。

https://github.com/xserver-inc/cocoon/commit/95bf4ddeb0860f965c8c056b1e949b58634f50a5

この為、postにはpost_contentが無い。

object(stdClass)#1767 (9) {
["ID"]=>
string(5) "37696"
["sum_count"]=>
string(2) "16"
["post_title"]=>
string(21) "【本文】比較表"
["post_author"]=>
string(1) "1"
["post_date"]=>
string(19) "2022-06-05 11:00:59"
["post_modified"]=>
string(19) "2022-06-05 11:00:59"
["post_status"]=>
string(7) "publish"
["post_type"]=>
string(4) "post"
["comment_count"]=>
string(1) "0"
}

●対策

投稿IDから、本文を取得し、isset(get_post($post->ID)->post_content)に修正する。


   
chu-ya
(@chu-ya)
Famed Member Registered
結合: 2年前
投稿: 2629
 

●追記

以下が変更となった該当記事です。
この時、スニペット出力のみ修正し、指摘の通り、判定文の修正が漏れています。

https://wp-cocoon.com/community/postid/77522/


   
(@lovagelab)
Active Member Registered
結合: 3週間前
投稿: 3
Topic starter  

chu-yaさん

 

早々に詳細な情報のご回答ありがとうございました。

経緯含めよく理解でき、とても勉強になりました。


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

ご連絡いただきありがとうございます。
以前の不具合修正で、認識のスニペットに不具合が出ていることに気づいておりませんでした。
chu-yaさんの対策方法で修正させていただきました。
https://github.com/xserver-inc/cocoon/commit/370c543f769b982054b186abbdc9577380ba213e

最新版はGitHubからダウンロードできます。
------------------------------------------------
https://github.com/xserver-inc/cocoon
開発中の最新ファイルをダウンロードする場合は、上記ページのダウンロードボタンからzipファイルをダウンロードしてください。

WordPressでの手動アップデート方法はこちら
https://wp-cocoon.com/manual-update-of-cocoon-theme/
------------------------------------------------


   
LOVAGE LAB reacted
(@lovagelab)
Active Member Registered
結合: 3週間前
投稿: 3
Topic starter  

わいひらさん

早速のご対応ありがとうございました。

ご示唆いただいた方法で開発中の最新ファイル(Cocoon 2.7.6.2)をダウンロード&手動アップデート(2.7.6⇒2.7.6.2)し、私より提示させていただいておりましたテスト用固定ページにて、[popular_list snippet=1]により正常にスニペットが表示される(最新版で不具合が修正されている)ことを確認できました。
#アップデート後のブラウズ結果を添付しました。
#テスト用固定ページは削除させていただきます。

これにて本件「解決済」とさせていただきます。

日頃よりテーマを利用させていただき感謝申し上げます
また、本件に関しご対応いただきましたみなさまに御礼申し上げます。
今後ともよろしくお願いいたします。

 

 

 

 


   
わいひら and chu-ya reacted
わいひら
(@yhira)
Illustrious Memberサイト Admin
結合: 7年前
投稿: 16941
 

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


   
共有:

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

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

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

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

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

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

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

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