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]プロフィールウィジェットが一部のページで正しく表示されない

26 投稿
5 ユーザー
20 Reactions
531 表示
(@satty)
Active Member Registered
結合: 7か月前
投稿: 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年前
投稿: 2685
 

●確認

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

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


   
わいひら reacted
(@satty)
Active Member Registered
結合: 7か月前
投稿: 3
Topic starter  

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

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


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

>わいひらさん

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

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


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

@satty さん

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


   
わいひら reacted
(@satty)
Active Member Registered
結合: 7か月前
投稿: 3
Topic starter  

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

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

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

   
chu-ya and はる reacted
chu-ya
(@chu-ya)
Famed Member Registered
結合: 2年前
投稿: 2685
 

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

●発生のアルゴリズム
①一覧ページの時、以下でプロフィールを取得します。
[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年前
投稿: 2685
 

>わいひらさん

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
結合: 4年前
投稿: 7672
 

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

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

 

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

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

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

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

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

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

$description = '';

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

●対策案

ログインユーザーでなく、管理ユーザーとする?
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
結合: 7年前
投稿: 17013
 

投稿者:: @chu-ya

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

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

投稿者:: @mk2_mk2

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

 

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

 


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

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

・ユーザー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
結合: 7年前
投稿: 17013
 

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


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

投稿者:: @chu-ya

●対策案

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

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


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

@satty さん

投稿者:: @satty

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

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


   
satty and わいひら reacted
mk2
(@mk2_mk2)
Illustrious Member Moderator
結合: 4年前
投稿: 7672
 

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

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

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

投稿者:: @yhira

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

 
 

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

投稿者:: @yhira

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

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

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

@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
結合: 4年前
投稿: 7672
 

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年前
投稿: 2685
 

@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年前
投稿: 2685
 

●修正案

●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
結合: 7年前
投稿: 17013
 

該当部分を修正しました。
https://github.com/xserver-inc/cocoon/commit/48dbeb2b87a5dfd164c150f82a18e4b75ea8ce23


   
mk2
(@mk2_mk2)
Illustrious Member Moderator
結合: 4年前
投稿: 7672
 

遅くなりました。

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

投稿者:: @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
結合: 7年前
投稿: 17013
 

投稿者:: @mk2_mk2

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

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


   
(@makorinrin)
Active Member Registered
結合: 2週間前
投稿: 12
 

質問をどこからしたらよいのかわからないので、こちらに書かせてください。

プロフィールをサイドバーに設置したのですが、掲載本文下にも2つ入ってしまいました。これを消去するにはどうしたらいいのでしょうか。ウィジェットの本文下の部分は何度もチェックしましたが何もありません。プロフィール設定も変更していません。


   
mk2
(@mk2_mk2)
Illustrious Member Moderator
結合: 4年前
投稿: 7672
 

Makorinrinさん

他の方のお問い合わせ・別内容のトピックへの追記はご遠慮ください。
(もし、ご自分のお問い合わせに、別の方が別内容のものをお書きになった場合、どうお感じになるでしょうか)

勝手ながら、以下へ転記させていただきました。

[C]プロフィールが掲載本文下に2つ表示されるのを消したい
https://wp-cocoon.com/community/postid/81102/

 


本トピックは、実質的に解決していると思いますし、確認もできているかと思います。
これを機に、クローズしてしまおうと思います。


   
わいひら reacted
共有:

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

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

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

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

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

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

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

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