フォーラムへの返信
-
投稿者投稿
-
んーなんでしょうね…それはこちらでは再現できませんでした。
wp-includes/media.php
の中にwp_get_loading_attr_default()
という関数があります。これがlazy
にするかどうかを判定して出力しているのですが、$content_media_count = wp_increase_content_media_count();
という部分を
$content_media_count = wp_increase_content_media_count(); echo '<pre>`; var_dump($content_media_count); echo '</pre>`;
としてみたら、画面上にどのような表示がされますか? 僕の環境だと
int(1) int(2)
という表示がされます。これは画像を表示するたびに実行されるので、画像が2枚だから1と2が出力されるということです。最近の登校ブロックを入れると最初の画像にも
lazy
が出力されてしまうということは、その画像より前の段階で、何らかの理由によりこの関数が実行されているのかなと…。上記のようにコードを改変することで、この関数がどこで呼び出されたのかがわかるので、可能であれば試してみてください。♥ 0Who liked: No userどうもお使いのプラグインのショートコードで出力されるテーブルは js でテーブルの幅を制御しているみたいで、タブブロック、非表示のタブコンテンツは
display: none
で非表示にしているので非表示のときは js で幅が取得できないため縮んでしまうようです。CSS を追加して強制的にサイズを調整するしかないかなと思います。例えば
.smb-tabs .dataTables_scrollHeadInner, .smb-tabs .tablepress, .smb-tabs .dataTables_scrollBody { width: 100% !important; }
みたいな。状況に合わせて CSS を調整してみてください。
wp_enqueue_style()
もwp_enqueue_script ()
も第一引数はそのスタイル(やスクリプト)の名前になります(名前は自分で決めて大丈夫です)。名前はそれぞれのファイルに対して別々のものを指定しなければなりません。そうしないとどのファイルがどれか識別できないからです。['jquery']
というふうに依存関係を指定している部分がありますが、これもjquery
という名前でスクリプトが登録されているからです。上記のコードだと すべてのスタイル・スクリプトが
msm_style
・msm_scripts
になっているので、これだと全部のスタイルやスクリプトが読み込まれていないのではないですかね?僕は picadate というライブラリを使ったことがないので使い方を知りませんが、↑の名前に関する記述を修正してすべてのスタイル・スクリプトが読み込まれたことを確認したあとも動作しないのでれば picadate を動かすためのコードに問題があるのかもしれません。
♥ 0Who liked: No userテストサイトありがとうございます!
トップページ、サンプル1についてはこちらでもほぼ同じ内容でローカル環境をつくってみたところ再現できました。サンプル2についてはこちらでは再現できませんでした。
トップページについては、ページ表示前にコンテンツの有無を調べるために
the_content()
を実行しており、それで画像のカウントが二重になってしまうので問題がおこっているようです。themes/snow-monkey/template-parts/content/entry/front-page.php
で<?php ob_start(); $has_do_shortcode = has_filter( 'the_content', 'do_shortcode' ); if ( $has_do_shortcode ) { remove_filter( 'the_content', 'do_shortcode', $has_do_shortcode ); the_content(); add_filter( 'the_content', 'do_shortcode', $has_do_shortcode ); } else { the_content(); } $content = ob_get_clean(); ?> <?php if ( $content ) : ?>
となっているところを、まるっと消して
<?php if ( get_the_content() ) : ?>
に変えてしまうとどうでしょうか?
♥ 0Who liked: No userwp_enqueue_style()
、wp_enqueue_script()
の書き方が間違っているようです。どちらにも URL を列挙していますが、関数は引数の順番が決まっているのでそのように必要な文だけ列挙することはできません。<?php wp_enqueue_script( $handle, $src, $deps, $ver, $in_footer ); ?>
ファイルの URL(↑でいえば
$src
)は2番目の引数であり、3番目の引数は依存関係を指定するものになるので、3番目にしてするのが['jquery']
にならないとダメです。複数のファイルを読み込ませたい場合は
wp_enqueue_style()
、wp_enqueue_script()
自体を複数個書くことになります。♥ 0Who liked: No user2022年3月3日 10:23 AM 返信先: パスワード保護を使ったページで、セクションブロックやコンテンブロック内にmoreタグ(続きブロック)を入れると、入力欄の表示がおかしくなる。 #100247コンテンツ(
the_content()
で表示される部分)の前にウィジェットやページヘッダー画像が入っていたりしないですかね?♥ 0Who liked: No userなるほどです。Autoptimize はそれはそれで不具合が出る可能性もゼロではないと思うので、可能であればサーバー移転を考えたほうが良いと思いました。
解決した場合はトピックのクローズをお願いします。今回はこちらで閉じておきますね。
♥ 0Who liked: No userぱっと思いつく可能性は2つあります。
– サブディレクトリに WordPress を設置している
– ブラウザで cookie を無効化しているForms は外部からの不正送信かどうかの確認のために cookie を使用しています。
1つ目は僕も未検証なので確信はありませんが cookie の発行のためにパスを指定する必要があるので、可能性はあるのかなと。
2つ目は cookie 自体が発行されないとチェックに失敗するためです。
♥ 0Who liked: No user2022年3月2日 2:13 PM 返信先: パスワード保護を使ったページで、セクションブロックやコンテンブロック内にmoreタグ(続きブロック)を入れると、入力欄の表示がおかしくなる。 #100183これでどうだ!
add_filter( 'the_password_form', function( $output ) { global $post; if ( ! get_option( 'mwt-protected-more' ) ) { return $output; } $extended = get_extended( $post->post_content ); if ( empty( $extended['extended'] ) ) { return $output; } else { $extended_extended = trim( str_replace( '<!-- /wp:more -->', '', $extended['extended'] ) ); $parsed_extended = parse_blocks( $extended_extended ); if ( 0 < count( $parsed_extended ) ) { $last_extended = end( $parsed_extended ); $last_extended_innerhtml = trim( $last_extended['innerHTML'] ); if ( 0 === strpos( $last_extended_innerhtml, '</' ) ) { $output = $output . $last_extended['innerHTML']; } } } return $extended['main'] . $output; }, 11 );
これまでは単純に more の前後でコンテンツをぶった切って前を表示していたので(おそらくこれが WordPress 的にも仕様)、more が入れ子になっている場合は、more 以降に存在する more の親の閉じタグまで消えてしまうためレイアウトが崩れてしまっていました。
上記のコードにすることで、入れ子になっている場合は「その入れ子の中に限ってコンテンツをパスワード保護する」という挙動になり、親の閉じタグは出力されるのでレイアウトが崩れないようになります。ただし、「その入れ子の中に限ってコンテンツをパスワード保護する」なので、
<section> コンテンツA <more /> コンテンツB </section> コンテンツC
のような構造の場合、「コンテンツC」は表示されてしまうことになります。
2022年3月2日 11:03 AM 返信先: パスワード保護を使ったページで、セクションブロックやコンテンブロック内にmoreタグ(続きブロック)を入れると、入力欄の表示がおかしくなる。 #100170あ、やっぱダメですね、もうちょっとやってみます…。
♥ 0Who liked: No user2022年3月2日 11:00 AM 返信先: パスワード保護を使ったページで、セクションブロックやコンテンブロック内にmoreタグ(続きブロック)を入れると、入力欄の表示がおかしくなる。 #100169ちょっと無理矢理感あるのですが、下記のような変更を試してみました。
snow-monkey/app/setup/protected.php
の中にあるadd_filter( 'the_password_form', function( $output ) { ... }, 11 );
を
add_filter( 'the_password_form', function( $output ) { global $post; if ( ! get_option( 'mwt-protected-more' ) ) { return $output; } $extended = get_extended( $post->post_content ); if ( empty( $extended['extended'] ) ) { return $output; } else { $extended_extended = trim( str_replace( '<!-- /wp:more -->', '', $extended['extended'] ) ); $parsed_extended = parse_blocks( $extended_extended ); if ( 1 < count( $parsed_extended ) ) { $last_extended = end( $parsed_extended ); $output = $output . $last_extended['innerHTML']; } } return $extended['main'] . $output; }, 11 );
に置き換えてみてください! 一応 more の位置をセクション内、記事直下、セクションの中のグループの中と試してみましたが、大丈夫そうでした。無理矢理感あるので WordPress のアップデートや入れ子構造によっては崩れたり保護部分が見えちゃったりする可能性がありそうでちょっとうーんという感じではあります…。
♥ 0Who liked: No user2022年3月2日 10:09 AM 返信先: パスワード保護を使ったページで、セクションブロックやコンテンブロック内にmoreタグ(続きブロック)を入れると、入力欄の表示がおかしくなる。 #100157もしかしたらこの辺の issue も関連しているかも。
♥ 0Who liked: No user2022年3月2日 9:55 AM 返信先: パスワード保護を使ったページで、セクションブロックやコンテンブロック内にmoreタグ(続きブロック)を入れると、入力欄の表示がおかしくなる。 #100156こちらでも全く同じブロック構成でテストしてみたいと思いますので、エディターをテキストモードに切り替えたときに表示される HTML をここに貼り付けてもらえますか?
♥ 0Who liked: No userちなみに、初回アクセス時はこのようなエラーがでているようです。
2回目以降はでなくなりますが、多分それはキャッシュされているからで、何度もリロードしているとこのエラーがでたりでなかったりします。js ファイルや画像ファイルの読み込みにランダムに失敗している?ように見えるので、サーバー側の問題の可能性もあるのかもしれません。
♥ 0Who liked: No user -
投稿者投稿