フォーラムへの返信
-
投稿者投稿
-
あーこれちょっと難しい問題ですね…。
一応、
add_filter( 'render_block_snow-monkey-forms/snow-monkey-form', function( $html ) { return str_replace( 'smf-focus-point', '', $html ); } );
というコードで
.smf-focus-point
を消すことはできるのですが、フォームの画面遷移が画面リロード無しで非同期で実行されるため、.smf-focus-point
が無いとフォームの先頭への移動が実行されず、送信してもその位置のままになるからかなり操作感がわるくなってしまいます。ちなみに、
確認画面、完了画面でフォームより上の文言を変更しているのですが、
Snow Monkey Forms は入力・確認・完了画面の遷移が同一ページ上で行われるので、フォームの外側で、確認画面と完了画面だけ文言を変えるというのが普通ではできないのでは?と思ったのですが、どのように実装されているのでしょうか?
template-parts/archive/entry/entry
テンプレートパーツでは日付表示の有無がコントロールできないので(できるようにしたほうが良いかもですが)、まず、下記のように変更してみてください。\Framework\Helper::get_template_part( 'template-parts/archive/entry/entry', 'all-entries', // ここを変える $args );
↓
\Framework\Helper::get_template_part( 'template-parts/archive/entry/entry', 'marketing-entries-archive', // ユニークなものならなんでも良いですが、ここでは marketing-entries-archive としておきます $args );
次に、メタ情報のテンプレートパーツの引数をカスタマイズします。
add_filter( 'snow_monkey_get_template_part_args_template-parts/loop/entry-summary/meta/meta', function( $args ) { // 先で指定した name 付き(marketing-entries-archive)でテンプレートパーツが呼ばれたときだけ実行 if ( 'marketing-entries-archive' === $args['name'] ) { $args['vars']['_display_published'] = true; // 日付を表示 } return $args; } );
試してみてください!
んーとなると
is_page()
に何かあるんですかね〜。でもこちらの環境ではis_page()
を使ってもPHP Deprecated:
は出力されなかったので、is_page()
+ 何か、あるいはis_page()
のときに発火する何か、みたいな可能性もあるのかなと思いました。トピックのクローズをお願いします!
♥ 0Who liked: No userまず前提として、
– 埋め込みに失敗しました
– Snow Monkey 公式サイトトップページのブログカードのレイアウトが編集画面で崩れるについては、WordPress のデフォルトの挙動でした。
その上で、Snow Monkey は
– WordPress がブログカードとして表示できないもの(つまり↑であげたもの)
– WordPRess がブログカードとして表示するもののそれぞれについて、それぞれに別々の処理をして、結果としてどちらも同じデザインのブログカードを表示する、ということをやっています。さらに、ブログカードの表示処理は実際のページと編集画面とはまた別の処理になっていて、今回は編集画面用の処理に不具合があったことが原因でした。
編集画面用の処理は、まずそれがブログカードにするかどうかを判定する必要があって、その判定処理が
$request_uri = filter_input( INPUT_SERVER, 'REQUEST_URI' ); if ( ! $request_uri ) { return false; }
の部分でした。で、サーバーの環境によって
filter_input( INPUT_SERVER, 'REQUEST_URI' )
という書き方ではデータがとれないことがあるみたいで、そういう環境用にif ( ! $request_uri ) { $request_uri = esc_html( wp_unslash( $_SERVER['REQUEST_URI'] ?? '' ) ); }
という処理を追加しました。これでより多くの環境で正しく条件判定ができるようになり、JKDECOR さんのサイトでもちゃんと表示するようになった、ということになります。
Snow Monkey v27.0.2 としてリリースしているのでアップデートして改めて確認をお願いします!
♥ 0Who liked: No userちょっと下記をやってみてほしいです!
snow-monkey/vendor/inc2734/wp-oembed-blog-card/src/Bootstrap.php
のprotected function _is_block_embed_rendering_request() { $reuest_uri = filter_input( INPUT_SERVER, 'REQUEST_URI' );
を
protected function _is_block_embed_rendering_request() { $reuest_uri = filter_input( INPUT_SERVER, 'REQUEST_URI' ); if ( ! $reuest_uri ) { $reuest_uri = $_SERVER['REQUEST_URI']; }
に変更
♥ 0Who liked: No userとりあえず管理画面をみた範囲で。
ブログカードの仕組みは、
– URL が貼られる
– 次の URL にリクエストを送る(下記は YouTube のチャンネルの URL を貼り付けた場合の例)
https://livingskape.jkdecor.com/wp-json/oembed/1.0/proxy?url=https%3A%2F%2Fwww.youtube.com%2F%40BingJapan&_locale=user
– ブログカードのもとになるデータが生成されて返ってくる
– それをもとにブログカードを表示するとなっています。このリクエストがなぜか404になってしまうみたいです。
Snow Monkey 公式サイトでは正しくデータが返ってくるので、今時点で怪しいなと思うのはセキュリティプラグインやサーバー側のセキュリティ機能で REST API が制限されている、とか、
.htaccess
に独自のリライトルールを追加している、が怪しいかなと感じました。もしセキュリティプラグインを使っていたり、サーバー側のセキュリティ機能を有効化している場合はそれを停止してみてください。
また、.htaccess
を独自にいじっているようであれば、その内容を教えてください。♥ 0Who liked: No userお返事遅くなりすみません! いただいたコードをテスト環境にはりつけて試してみました。
PHP 8.1、8.2、8.3 で試してみたのですが、いずれの環境でもエラーは確認できませんでした。
別の要因がエラーの原因である可能性もあるのかな?と思いましたので、以下について教えてください。
以下のエラーが出力されました。
PHP Deprecated: trim(): Passing null to parameter #1 ($string) of type string is deprecated in /ホスト/ドメイン/public_html/フォルダ/wp-content/themes/snow-monkey/vendor/inc2734/wp-view-controller/src/App/Contract/Template_Tag.php on line 194上記について、エラーはどこに出力されたのでしょうか? 画面上、エラーログ等…。
エラーログだった場合、
error_log('$inquiry: ' . print_r($inquiry, true));
の部分をerror_log('$inquiry: ' . print_r($inquiry, true), 3, get_template_directory() . '/error_log');
のようにすると、そのエラーはsnow-monkey/error_log
に出力されるのか、それともサーバーのエラーログに出力されるのかどちらでしょうか?もう一点、子テーマや My Snow Monkey によるテンプレートの上書き、あるいは
snow_monkey_get_template_part_render
フィルターフックを使ったカスタマイズはされていますでしょうか?
している場合、それをやめるとエラーは発生しなくなりますか?♥ 0Who liked: No userまず All-in-One WP Migration プラグインをサイトにインストールし、エクスポートしてください。
僕もエクスポートされたデータを頂くばかりで詳しい操作方法はわからないので、詳しいやり方はググってみてください。エクスポートできたら、オンラインコミュニティ(Discrod)で僕に DM で送ってください!
♥ 0Who liked: No user詳しくありがとうございます。プラグインや CSS の状況が同じでも、3パターンの不具合が発生するということは、原因は一つではないのかもしれません…。
ちょっとこれ以上は実際にコードを書き換えたりしながら詳しく調査しないとわからなさそうなので、下記のいずれかをご対応いただくことは可能でしょうか?
1. All-in-One WP Migration でエクスポートしたデータと WordPress のログイン情報を提供いただく
2. 直接サイトにログインして調査させていただくただ、コードを書き換えたりしないと調査が難しいと思うので、できれば(1)のほうが安全かなとは思います。
ご検討よろしくお願いします!♥ 0Who liked: No userありがとうございます。となると
snow_monkey_forms/administrator_mailer/args
にフックさせた処理に何かある可能性もあるのかなと思いました。こちらでも試してみたいので、
snow_monkey_forms/administrator_mailer/args
にフックさせた処理をここに貼り付けてもらうことはできますか?♥ 0Who liked: No usersnow_monkey_forms/administrator_mailer/args
フィルターフックを使ったカスタマイズを行わない場合はPHP Deprecated〜
のエラーは表示されないのですかね?♥ 0Who liked: No userちょっと整理したいのですが、
– 何も消さない状態だと編集画面でブログカードが「真っ白」に表示される
– My Snow Monkey を無効化すると「このコンテンツを埋め込めませんでした。」のボックスが表示されるということであっていますか?
♥ 0Who liked: No user全角の空白が混ざっていたとかですかね…?
♥ 0Who liked: No user色の指定は頭に
#
が必要です。なので、例えばFFFFFF
ではなくて#FFFFFF
になります。
また、//文字色
のように、//
で始まるコメントは CSS では不正になるので、/* 文字色 */
のように書き換えるか削除してみてください。♥ 0Who liked: No userむーん…。
「My Snow Monkey を無効化したら表示される」けど「My Snow Monkey のブログカード部分の記述だけを消しても表示されない」ということは、その他の何かのコードが影響しているのだと思うので、1つずつ消していって、どのコードが影響しているのかを突きとめるのが確実かなと思います。突きとめたら、ブログカードに影響しない形にその部分のコードを書き換える感じで…。
♥ 0Who liked: No user -
投稿者投稿