「メイド・イン・ヘブン」スキン適用中

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

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

[C]プロフィールウィジェットが一部の...
 
共有:
通知
すべてクリア

[C]プロフィールウィジェットが一部のページで正しく表示されない

24 投稿
4 ユーザー
19 Likes
139 表示
(@satty)
Active Member Registered
結合: 1か月前
投稿: 3
Topic starter  

不具合・カスタマイズ対象ページのURL:
https://loveclassicmusic.com/

相談内容:
サイドバーのウィジェットに[C]プロフィールを使用しています。
ホームおよびカテゴリーを表示した際に「未登録のユーザーさん」と以下Warning表示になってしまいます。
Warning: Undefined variable $description in /home/ratchet3/loveclassicmusic.com/public_html/wp-content/themes/cocoon-master/lib/html-forms.php on line 1497
個別記事を表示した際は問題なく表示できるのですが、設定等で対応可能なようでしたらご教示ください。
スクショ添付しましたので、お手数ですがよろしくお願いいたします。

不具合の発生手順:
ホームおよびカテゴリー記事を表示した際。
個別記事の表示時には発生しません。

解決のために試したこと:
ウィジェットを一旦削除→再設定は試しました。
また、全プラグインを無効化してみましたが状況変わりませんでした。

環境情報:
----------------------------------------------
サイト名:LOVE CLASSIC MUSIC
サイトURL: https://loveclassicmusic.com
ホームURL: https://loveclassicmusic.com
コンテンツURL:/wp-content
インクルードURL:/wp-includes/
テンプレートURL:/wp-content/themes/cocoon-master
スタイルシートURL:/wp-content/themes/cocoon-child-master
親テーマスタイル:/wp-content/themes/cocoon-master/style.css
子テーマスタイル:/wp-content/themes/cocoon-child-master/style.css
WordPressバージョン:6.4.3
PHPバージョン:8.1.22
ブラウザ:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36 Edg/122.0.0.0
サーバーソフト:Apache
サーバープロトコル:HTTP/1.1
言語:ja,en;q=0.9,en-GB;q=0.8,en-US;q=0.7
----------------------------------------------
テーマ名:Cocoon
バージョン:2.7.1.2
カテゴリー数:8
タグ数:0
ユーザー数:1
----------------------------------------------
子テーマ名:Cocoon Child
バージョン:1.1.3
style.cssサイズ:845 バイト
functions.phpサイズ:203 バイト
----------------------------------------------
Gutenberg:1
Font Awesome:4
Auto Post Thumbnail:0
Retina:0
ホームイメージ:/wp-content/themes/cocoon-master/screenshot.jpg
----------------------------------------------
ブラウザキャッシュ有効化:0
HTML縮小化:0
CSS縮小化:0
JavaScript縮小化:0
Lazy Load:0
----------------------------------------------
利用中のプラグイン:
Advanced Editor Tools 5.9.2
Akismet Anti-spam: Spam Protection 5.3.2
ARVE Advanced Responsive Video Embedder 9.10.15
Classic Editor 1.6.3
Contact Form 7 5.9.2
Site Kit by Google 1.122.0
WordPress Popular Posts 6.4.2
WP Sitemap Page 1.9.3
Yoast SEO 22.3
----------------------------------------------


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

●確認

[Cocoon設定]→[SNSフォロー]→デフォルトユーザー

を確認願います。
選択されていますか?


   
わいひら reacted
返信引用
(@satty)
Active Member Registered
結合: 1か月前
投稿: 3
Topic starter  

@chu-ya さん、コメントありがとうございます。

ユーザー1つのみでして、スクショの通り選択されております。


   
返信引用
chu-ya
(@chu-ya)
Famed Member Registered
結合: 2年前
投稿: 2263
 

>わいひらさん

Ver.2.7.0でも同様の現象が発生しているページを散見します。
一覧ページ(投稿、固定ページ以外)で発生しています。

ソースを見ましたが、エラーは、1497行目以前に$descriptionに値を設定していないのが問題です。
そもそも1491行目の「未登録のユーザーさん」となる条件が分からず。


   
わいひら reacted
返信引用
chu-ya
(@chu-ya)
Famed Member Registered
結合: 2年前
投稿: 2263
 

@satty さん

[Cocoon設定]の「まとめて保存」を再度クリックしても変わりませんか?


   
わいひら reacted
返信引用
(@satty)
Active Member Registered
結合: 1か月前
投稿: 3
Topic starter  

@chu-ya さん
[Cocoon設定]の「まとめて保存」をクリックしたところ、正常に表示されるようになったようです。
ご対応いただきありがとうございます。

特に[Cocoon設定]を明示的に変更した記憶がないため、今後のためにお伺いさせてください。
「まとめて保存」はどのタイミングでクリックしておくべきでしょうか?

  • ウィジェット追加時
  • 固定ページ追加時
  • メニュー追加時 等、何かあればご教示いただけますと幸いです。

   
chu-ya and はる reacted
返信引用
chu-ya
(@chu-ya)
Famed Member Registered
結合: 2年前
投稿: 2263
 

改善した事から、推測すると以下の流れになります。

●発生のアルゴリズム
①一覧ページの時、以下でプロフィールを取得します。
[Cocoon設定]→[SNSフォロー]→デフォルトユーザー

https://github.com/xserver-inc/cocoon/blob/6978de45bba51421b2e5a6fa7f2bfcba344b3423/lib/html-forms.php#L1425-L1427

②①で取得した値が無い為、「未登録のユーザーさん」となる。

https://github.com/xserver-inc/cocoon/blob/6978de45bba51421b2e5a6fa7f2bfcba344b3423/lib/html-forms.php#L1491

③②の状態だと$descriptionが未設定の為、以下でエラーとなった。
https://github.com/xserver-inc/cocoon/blob/6978de45bba51421b2e5a6fa7f2bfcba344b3423/lib/html-forms.php#L1497


●発生する要因
オプション(get_sns_default_follow_user)保存された値が、存在しないケースかと思います。
なぜ、壊れているか?これが根本的な問題です。

https://github.com/xserver-inc/cocoon/blob/6978de45bba51421b2e5a6fa7f2bfcba344b3423/lib/page-settings/sns-follow-funcs.php#L105


●回答
気にされている、ウィジェット追加、固定ページ追加、メニュー追加などは、影響しません。

もし1回も、Cocoon設定を保存してないなら、必ず1回保存して下さい。


   
satty and わいひら reacted
返信引用
chu-ya
(@chu-ya)
Famed Member Registered
結合: 2年前
投稿: 2263
 

>わいひらさん

1度もCocoon設定を保存してない場合wp_get_current_user()の値ってなんでしょ?
現在のログインユーザーの情報を取得し、一見、Cocoon設定には正しく表示され。
しかし、保存しないと、get_sns_default_follow_user自体がDBに無く。

閲覧者だと、何も取得できないのでは?
この為、オプション(get_sns_default_follow_user)は未定となるのでは??


   
わいひら reacted
返信引用
mk2
(@mk2_mk2)
Illustrious Member Moderator
結合: 3年前
投稿: 6938
 

chu-yaさんの仰るとおりですね。

  • WordPressを新規インストール
  • Cocoon親テーマをインストール
    (有効化せず)
  • Cocoon子テーマをインストール
    (有効化だけ行い、「Cocoon設定」の保存は未実施)

 

上記の状態で、プロフィールウィジェットを設置すると。

ログイン状態の時は、表示されますけれど。

 
未ログインの状態だと、今回の事象が発生します。
 
データベースの子テーマ設定には、「sns_default_follow_user」はないですね。
(ほとんど何もないですけれど)

   
わいひら reacted
返信引用
chu-ya
(@chu-ya)
Famed Member Registered
結合: 2年前
投稿: 2263
 

https://github.com/xserver-inc/cocoon/blob/6978de45bba51421b2e5a6fa7f2bfcba344b3423/lib/html-forms.php#L1424

少なくとも以下は必須です。

$description = '';

   
わいひら reacted
返信引用
chu-ya
(@chu-ya)
Famed Member Registered
結合: 2年前
投稿: 2263
 

●対策案

ログインユーザーでなく、管理ユーザーとする?
1人しかユーザー登録していなければ、管理ユーザー=ログインユーザーとなり。

if (!function_exists( 'get_sns_default_follow_user' ) ):
function get_sns_default_follow_user(){
  $user = get_theme_option(OP_SNS_DEFAULT_FOLLOW_USER);
  // デフォルトユーザー保存なし?
  if (!$user) {
    // 管理ユーザーを取得
    $user = get_users('role=administrator')[0]->ID;
  }
  return $user;
}
endif;

   
わいひら reacted
返信引用
わいひら
(@yhira)
Illustrious Member Admin
結合: 6年前
投稿: 16481
 

投稿者:: @chu-ya

1度もCocoon設定を保存してない場合wp_get_current_user()の値ってなんでしょ?

以下のmk2さんさんが書かれた条件のとき添付画像のユーザー情報が返されるようです。idが0になるみたいです。

投稿者:: @mk2_mk2

  • WordPressを新規インストール
  • Cocoon親テーマをインストール
    (有効化せず)
  • Cocoon子テーマをインストール
    (有効化だけ行い、「Cocoon設定」の保存は未実施)

 

上記の状態で、プロフィールウィジェットを設置すると。

 


   
返信引用
わいひら
(@yhira)
Illustrious Member Admin
結合: 6年前
投稿: 16481
 

以下のような対策を行いました。

・ユーザーIDが0の時は、1にして表示する(WordPressインストール初期時は、必ず1になるので、これでインストール初期時のエラーのほとんどをつぶせる)
・ディスクリプションが空の時、警告メッセージを表示しない(これで少なくともメッセージは出ない)
・それでもユーザーが不正の場合案内メッセージを表示する

https://github.com/xserver-inc/cocoon/commit/960602d59ca5f986f8d4ebf92cff117ad1ade75f

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

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


   
返信引用
わいひら
(@yhira)
Illustrious Member Admin
結合: 6年前
投稿: 16481
 

上の書き込みをする前に、再読み込みをしてなかったので、この2つの書き込みを見ていませんでした。確認してみます。
https://wp-cocoon.com/community/postid/78003/
https://wp-cocoon.com/community/postid/78004/


   
返信引用
わいひら
(@yhira)
Illustrious Member Admin
結合: 6年前
投稿: 16481
 

投稿者:: @chu-ya

●対策案

ログインユーザーでなく、管理ユーザーとする?
1人しかユーザー登録していなければ、管理ユーザー=ログインユーザーとなり。

こっちの方が初期の管理ユーザー以外にも対応できていて良さそうだったので、こちらを使わせていただきました。
https://github.com/xserver-inc/cocoon/commit/24c479310e87feee71bba68634f7740ff71e75b4


   
返信引用
chu-ya
(@chu-ya)
Famed Member Registered
結合: 2年前
投稿: 2263
 

@satty さん

投稿者:: @satty

特に[Cocoon設定]を明示的に変更した記憶がないため、今後のためにお伺いさせてください。

上記の一言がエラー原因の糸口となり、対策に繋がりました。


   
satty and わいひら reacted
返信引用
mk2
(@mk2_mk2)
Illustrious Member Moderator
結合: 3年前
投稿: 6938
 

ご対応いただき、ありがとうございます。

先程の環境で、親テーマのバージョンアップを行うと以下のような表示になりました。

(以下の確認になると思います)

投稿者:: @yhira

・ユーザーIDが0の時は、1にして表示する(WordPressインストール初期時は、必ず1になるので、これでインストール初期時のエラーのほとんどをつぶせる)
・ディスクリプションが空の時、警告メッセージを表示しない(これで少なくともメッセージは出ない)

 
 

続いて、「ユーザーを新規追加」 ⇒ 「最初のユーザーを削除」すると、以下のような表示に。

投稿者:: @yhira

・それでもユーザーが不正の場合案内メッセージを表示する

 
 
【追記】
ふと思いましたが、上のケースではユーザーが「保存」するアクションに繋がらない気がしました。
 
ID=0が、Cocoon設定未保存の場合であれば、一律、下のケースと同じ表示にしても良さそうな気がしました。ユーザーが「保存」をするアクションに繋がるかなと)

   
わいひら reacted
返信引用
chu-ya
(@chu-ya)
Famed Member Registered
結合: 2年前
投稿: 2263
 

@mk2_mk2 さん

投稿者:: @mk2_mk2

最初のユーザーを削除

2ユーザー登録してあり、1ユーザー目をデフォルトとして登録した。
その後、1ユーザー目を削除した。

私のコード、このケースを考慮していませんね。
既にDB保存されget_sns_default_follow_user=1となり、返却値は1人目を示し。
存在しないので、「未登録ユーザーさん」となる。

(!get_user_by('id', $user))に修正?

既に登録済のデフォルトユーザーが存在するかチェックし、無いなら管理者ユーザーの1番目を返却する?

 


   
わいひら reacted
返信引用
mk2
(@mk2_mk2)
Illustrious Member Moderator
結合: 3年前
投稿: 6938
 

chu-yaさん

以前「NO USER」とした対応があったかと思うのですけれど、それがきいている気がします。

再度、以下の環境を作成しました。
ユーザーは1つだけです。
(添付画像は、html-forms.phpにvar_dump($user_id)を追加しています

投稿者:: @mk2_mk2

  • WordPressを新規インストール
  • Cocoon親テーマをインストール
    (有効化せず)
  • Cocoon子テーマをインストール
    (有効化だけ行い、「Cocoon設定」の保存は未実施)

上記だと、以下のような表示です。

 
 
続いて、「Cocoon設定」を「まとめて保存」します。
その後の表示は以下です。
 
 
その後、管理者ユーザー(id=2)を追加し、最初のユーザー(id=1)を削除します。
その後の表示は以下です。

   
わいひら reacted
返信引用
chu-ya
(@chu-ya)
Famed Member Registered
結合: 2年前
投稿: 2263
 

@mk2_mk2 さん

①既にデフォルトユーザー=1となり。
https://github.com/xserver-inc/cocoon/blob/24c479310e87feee71bba68634f7740ff71e75b4/lib/html-forms.php#L1427

②プロフィール情報などは取得されない。
以下で初めて、該当ユーザーが存在するかチェックされ、ユーザー=1がないので、NO USERとなってしまう。
https://github.com/xserver-inc/cocoon/blob/24c479310e87feee71bba68634f7740ff71e75b4/lib/html-forms.php#L1471-L1472


①でデフォルトユーザーが無いでの、ユーザー一覧の管理者ユーザーを取得し、戻り値が2となるが望ましいです。
※ユーザー一覧のいずれかでも良いですが、対象が記事一覧なので、管理者としています。

私が先に書いたコード(最新版ソース)には、デフォルトユーザーのチェックが漏れています。

また、最新版では、以下の「未登録のユーザーさん」にはならないです。

https://github.com/xserver-inc/cocoon/blob/24c479310e87feee71bba68634f7740ff71e75b4/lib/html-forms.php#L1496

 


   
わいひら reacted
返信引用
chu-ya
(@chu-ya)
Famed Member Registered
結合: 2年前
投稿: 2263
 

●修正案

●html-forms.php

generate_author_box_tagを、Ver2.7.1.8のソースに戻し、以下だけを追加。

author_boxショートコードで存在しないIDを指定した時のみ、「未登録のユーザーさん」となる。

$description = '';

 


●sns-follow-funcs.php

get_sns_default_follow_userを以下に修正。
必ず、存在するユーザーIDを返却する為、Ver2.7.1.9で変更した、generate_author_box_tagは、初期設定漏れの追加のみで済む。

if (!function_exists( 'get_sns_default_follow_user' ) ):
function get_sns_default_follow_user(){
  $user = get_theme_option(OP_SNS_DEFAULT_FOLLOW_USER);
  // デフォルトユーザー保存なし?
  if (!get_userdata($user)) {
    // 管理ユーザーを取得
    $user = get_users('role=administrator')[0]->ID;
  }
  return $user;
}
endif;

   
わいひら reacted
返信引用
わいひら
(@yhira)
Illustrious Member Admin
結合: 6年前
投稿: 16481

   
返信引用
mk2
(@mk2_mk2)
Illustrious Member Moderator
結合: 3年前
投稿: 6938
 

遅くなりました。

再度以下の環境を作成しました。

投稿者:: @mk2_mk2

  • WordPressを新規インストール
  • Cocoon親テーマをインストール
    (有効化せず)
  • Cocoon子テーマをインストール
    (有効化だけ行い、「Cocoon設定」の保存は未実施)

その直後の状態は、以下です。

 
 
この後は、
  1. Cocoon設定を未保存
  2. Cocoon設定を保存

に分岐します。

 
 

【①Cocoon設定を未保存のままの場合】

その後、新規ユーザー(id=2)を追加、最初のユーザー(id=1)を削除すると、以下のような表示です。

 


【②Cocoon設定を保存した場合】

Cocoon設定を保存直後の表示は以下です。

 
更に、新規ユーザー(id=2)を追加、最初のユーザー(id=1)を削除すると、以下のような表示です。

   
わいひら reacted
返信引用
わいひら
(@yhira)
Illustrious Member Admin
結合: 6年前
投稿: 16481
 

投稿者:: @mk2_mk2

その直後の状態は、以下です。

詳細にご確認いただきありがとうございます!
意図した表示になっているようです。
管理ユーザーを完全に消すことはできないと思うので、これで今回のような警告メッセージが出るような問題はでなくなるでしょう。


   
返信引用
共有:

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

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

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

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

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

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

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

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