-
投稿者投稿
-
2024年8月27日 5:20 PM #4224
【お使いの unitone のバージョン】12.0.11(子テーマを作って制作中)
【お使いのブラウザ】Chrome
【当該サイトのURL】制作中のため無し### 発生している問題
- MAMPで制作中、unitoneを有効化すると下記のエラーが表示される
Warning: foreach() argument must be of type array|object, string given in /Applications/MAMP/htdocs/(ディレクトリ名)/wp-content/themes/unitone/inc/remote-block-patterns.php on line 181
- 当初はWordPressのStudioで制作を始めたサイトで、そのときはエラーは表示されていなかった
- 途中でMAMPへ移行したタイミングで上記の表示を確認(移行にはAll-in-One WP Migrationを使用)
### 試したこと
- 子テーマを無効化
対応方法の見当がつかず、試したことが上記のみで申し訳ありません。
エラーが表示されていても基本的な作業はそのまま進められるのですが、一部プラグインの使用時に干渉してしまい、プラグインの設定を保存できないことがあります。(例:Admin Menu Editor)
お手数をおかけしますが、ご確認いただけますと幸いです。よろしくお願いいたします。
♥ 0いいねをした人: いません2024年8月27日 5:32 PM #4225すみません! 下記の確認をお願いしてよろしいでしょうか?
themes/unitone/inc/remote-block-patterns.php
のforeach ( $remote_block_patterns as $pattern ) {
の上の行に
var_dump( $remote_block_patterns );
を追加そして画面をリロードすると
$remote_block_patterns
に保存されている値が画面に表示されると思うので、それが何か教えてください! 確認したあとは追加したコードは消して大丈夫です。♥ 0いいねをした人: いません2024年8月27日 6:39 PM #4226早速のご確認ありがとうございます。
試したところ最上部に添付画像のような表示が出たのですが、こちらでよろしいでしょうか…!
♥ 0いいねをした人: いません2024年8月27日 9:23 PM #4227ありがとうございます! なぜかパターンのデータがシリアライズされているみたいですね…。
こちらで意図した挙動では無いので、例えば何らかのプラグインがなんらかの条件でデータをシリアライズしているとか、僕が使っているコアの関数が何らかの条件で内部でシリアライズしているとか、そういうのがあるのかもしれません。
こちらで状況が再現できていないため根本的な解決が難しいのですが、一時的な対策として、下記を試してみてほしいです。
また
foreach ( $remote_block_patterns as $pattern ) {
の上の行に、下記を追加してみてください!$remote_block_patterns = maybe_unserialize( $remote_block_patterns );
もしエラーメッセージがでたら、どういうメッセージがでたか教えてください。
♥ 0いいねをした人: いません2024年8月28日 12:06 AM #4228ご教示いただきありがとうございます!早速コードを追加してみたのですが、一番最初のWarningと同じエラーが表示されてしまいました。
念のためプラグインを一つずつ無効化した状態でも確認しましたが、いずれも変化はないようです。
もし他にこちらで試せることなどありましたらお伺いできますと幸いです。お手数をおかけいたします。
♥ 0いいねをした人: いません2024年8月28日 9:01 AM #4229oh…
となるとあとは実際にそのデータを云々して調査してみないとわからないのかなと…。
ということで、もし可能であれば次のいずれかをお願いしたいです!1. All-in-One WP Migration のデータを提供いただく
2.var_dump( esc_html( $remote_block_patterns ) );
を追加していただき、出力された文字列を共有していただく(1)が確実性は高いと思うのですが、セキュリティ等の関係で難しい場合もあると思うので、その場合は(2)のデータを頂ければこちらの環境で擬似的に調査できるかなと考えています。もし(1)が可能な場合はオンラインコミュニティ(Discord)の DM でデータを頂ければと思います。
ご検討よろしくお願いします!
♥ 0いいねをした人: いません2024年8月28日 1:39 PM #4230そうなのですね…!いろいろとご検討いただき大変恐縮です。
1. All-in-One WP Migration のデータを提供いただく
重ね重ねお手数をおかけしてしまうのですが、ぜひこちらでお願いできればと思っております。念のためクライアントに確認を取っておりますので、共有まで今しばらくお待ちいただけますと幸いです。
2. var_dump( esc_html( $remote_block_patterns ) ); を追加していただき、出力された文字列を共有していただく
取り急ぎこちらを試させていただきました。ページの先頭には
string(91301)
と表示されておりますのでご報告いたします。♥ 0いいねをした人: いません2024年8月28日 3:20 PM #4231お待たせいたしました。データ共有について確認が取れましたので、この後Discordにてお送りさせていただきます!お手数をおかけしますが、ご確認のほどよろしくお願いいたします。
♥ 0いいねをした人: いません2024年8月28日 3:22 PM #4232よろしくお願いします!!
♥ 0いいねをした人: いません2024年8月29日 2:14 PM #4236データ確認しました、ありがとうございます!
調査したところ、シリアライズされたパターンのデータが保存されているところまでは予想通りだったのですが、そのシリアライズされたデータが不完全な状態で保存されていたため、
maybe_unserialize()
でも復元できなかったようです。本来は「ダッシュボード → 外観 → unitone セットアップ → パターンライブラリーからパターンを再取得する」からパターンのデータを再取得できるのですが、上記不具合のためにエラーがでて再取得できないため、コードを書いて保存しているパターンのデータを一度消して頂く必要があります。
themes/unitone/inc/remote-block-patterns.php
の$transient = get_transient( 'unitone-remote-patterns' );
の上の行に
delete_transient( 'unitone-remote-patterns' );
を追加してください。そしてリロードしてエラーがでないことを確認したら追加したコードを消してください。その後「ダッシュボード → 外観 → unitone セットアップ」を開き、「パターンライブラリーからパターンを再取得する」で最新のパターンデータに更新してみてください。
不正なデータが保存されそうになったときは保存しないように、unitone のほうのコードも修正したいと思います。
以上、ご確認よろしくお願い致します!
♥ 0いいねをした人: いません2024年8月30日 1:37 AM #4237お忙しいところ、詳しく調査いただき誠にありがとうございます!
先ほど、ご教示いただいた方法を何度か試してみました。コード追加時はエラーが消えることを確認したのですが、コード削除→パターンの再取得を行うと、管理画面・実際のページともにエラーが復活してしまうようです…(作業直後は一時的に消えるのですが、更新すると再表示されます)。キタジマさんの環境ではいかがでしょうか。
とはいえ、原因がわかり安堵いたしました。WordPressのStudioで制作している段階でも別件で予期せぬ不具合などがありましたので、そもそもの環境が何かよくなかったのかもしれません…
幸いまだ制作の序盤ですので、新しく作り直すことも検討しております。何度もお手数をおかけすることは避けたいため、現在のデータのままで解決が難しい場合は一旦クローズいたしますので、おっしゃっていただければと思います!
♥ 0いいねをした人: いません2024年8月30日 9:30 AM #4238確かにリロードしたら再発しました…。で、色々調査したところ、原因がわかりました!
wp_options
テーブルの型が原因でした。これが通常の
wp_options
テーブルの構造です。option_value
が設定値が保存される場所で、その型がlongtext
となっているのがわかると思います。そしてこれが共有いただいたサイトの
wp_options
テーブルの構造です。option_value
の型がtext
になっています。text
だと保存できる設定値の大きさに制限があるため、パターンのデータが全て保存できず途中で切れてしまい、実行時に復元できない、という状態だったようです。どういう経緯でtext
型になってしまったのかはわかりませんが、phpMyAdmin
等のデータベースを触れるツールで型を変更してしまえば正しく動作するようになると思います。※ちなみにこのスクショは Local に入っている AdminerEvo のものです。Local であればそれで型が変更できます。
♥ 0いいねをした人: いません2024年8月31日 5:25 PM #4240再度のご確認ありがとうございます。
ご説明いただいた通り
option_value
の型を変更し、改めて「パターンライブラリーからパターンを再取得する」を実行したところ、無事にエラーがなくなりました!うまく動作しなかったプラグインも、問題なく動くようになっております。このあたり知識不足で大変恐縮ですが、自分の手元でも新たにWordPressを立ち上げて
wp_options
の構造を確認したところ、キタジマさんにご提示いただいた通常の構造と一致しておりました。制作中のデータではoption_value
以外の型もすべて相違していることを踏まえると、今後また別の不具合を起こさないためにも、やはり早い段階で作り直しておくのが安全に感じております…!こちらについては改めて検討したいと思います。こちらの環境によるものにも関わらず、お忙しい中数日にわたってご対応いただき、なおかつとても分かりやすく解説いただきまして本当にありがとうございました。今後もお世話になるかと思いますが、どうぞよろしくお願いいたします。トピックは閉じさせていただきます!
♥ 0いいねをした人: いません - MAMPで制作中、unitoneを有効化すると下記のエラーが表示される
-
投稿者投稿
- トピック「テーマを有効化した際のWarning表示」には新しい返信をつけることはできません。