-
投稿者投稿
-
2021年12月8日 5:12 PM #93730
【お使いの Snow Monkey のバージョン】15.17.0
【お使いの Snow Monkey Blocks のバージョン】13.6.0
【お使いの Snow Monkey Editor のバージョン】6.2.1
【お使いのブラウザ】Google Chrome 96.0.4664.55
【当該サイトのURL】### 実現したいこと
特定の固定ページのみウィジェットエリア(追尾サイドバー)を表示したいです。
### 発生している問題
下記のようなCSSを追加してみたのですが、なぜか時間が経つと表示されなくなってしまいます。キャッシュを削除するとまた表示されたりと、不安定で困っています。
body:not(.page-id-11) .l-sidebar-sticky-widget-area {
display: none;
}### 試したこと
フックなどで実現できるかと過去のフォーラム記事を調べましたが見つかりません。ご教授いただけると幸いです。
♥ 0Who liked: No user2021年12月8日 5:35 PM #93736追記
「Widget Logic」などのプラグインの存在は知っておりますが、制作の都合上、WordPress 5.8の新ウィジェットエディターを使いたいのです。
勝手を申しておりますが、どうかよろしくお願いいたします。
♥ 0Who liked: No user2021年12月9日 12:11 AM #937552021年12月9日 12:14 AM #937562021年12月9日 9:06 AM #93782> まーちゅう様
返信ありがとうございます。
フックのこと何となく分かってきました。
ただ今回は特定の固定ページのみで「表示」したい、つまり「特定の固定ページ以外で非表示」ということになると思います。
細かいことを言って申し訳ありませんが、その場合はどうしたらよいでしょうか。
♥ 0Who liked: No user2021年12月9日 9:23 AM #93785条件分岐の書き方を変えるだけです。
特定のページ以外での場合はis_page()
を! is_page()
に変えます。/** * 特定のページ以外で追尾サイドバーを非表示にする * * @param string $html はコンテンツの中身. */ add_filter( 'snow_monkey_template_part_render_template-parts/widget-area/sidebar-sticky', function ( $html ) { if ( ! is_page( 11 ) ) { return; } return $html; } );
2021年12月9日 9:40 AM #93786おぉ!ここで条件分岐できるんですね!
おかげさまで思い通りの結果を得られました。
何度も丁寧にありがとうございました。
トピックを閉じさせていただきます。
♥ 0Who liked: No user2021年12月9日 12:46 PM #93821再び申し訳ありません。
やはりキャッシュを削除するたびに該当ページのサイドバーが表示されたり、別ページを閲覧して戻ると非表示になっていたりと、不思議な状態になってしまいます。
まずは下記のように、該当ページで通常のサイドバーを非表示にしています。
add_filter( 'snow_monkey_template_part_render_template-parts/widget-area/sidebar', function ( $html ) { if ( is_page( 11 ) ) { return; } return $html; } );
次に、該当ページ以外で、追尾サイドバーを非表示にしています。
add_filter( 'snow_monkey_template_part_render_template-parts/widget-area/sidebar-sticky', function ( $html ) { if ( ! is_page( 11 ) ) { return; } return $html; } );
何か、やってはいけないことをしているのでしょうか。何度も申し訳ありませんが、ご教授ください。
♥ 0Who liked: No user2021年12月9日 6:38 PM #938462021年12月10日 9:00 AM #93871>キタジマさま
返信ありがとうございます。
管理バーの「キャッシュを削除」のことです。
詳しい経緯としては、My SnowMonkeyプラグインに上記のコードを記載し、該当ページをチェックしましたが反映されず「もしやキャッシュ?」と思いこのボタンを押したら表示されました。しかし他の固定ページへ移動して戻ってきたりブラウザの更新ボタンを押したりすると消えてしまいます。
まだ公開前のウェブサイトではありますが、アドレスを載せておきます。他の固定ページの追尾サイドバーを非表示にする処理は反映されているようです。ただ、このページだけ表示されているはずの追尾サイドバーが見えない状態です。
お手数をおかけしますが、よろしくお願いします!
♥ 0Who liked: No user2021年12月10日 10:36 AM #93876関連する箇所を少しいじってみての経過報告です。
カスタマイザーの「ページ速度最適化」内にある「ウィジェットエリアをキャッシュ」のチェックを外したら表示されました。
取り急ぎ、この方法でいきたいと思います。
♥ 0Who liked: No user2021年12月10日 10:57 AM #93878なるほどです。「ウィジェットエリアをキャッシュ」が有効な場合、キャッシュがないときは「ページが表示されたときに表示されたウィジェットエリアをキャッシュ」します。なので例えば「ページIDが11ではないページを開いたとき」にそのページのウィジェットエリアがキャッシュされてしまい、ページIDが11のページでもそのキャッシュが表示されてしまう、ということになります。
これはカスタマイザーにあるキャッシュ機能ではなくページキャッシュでも同じことで、例えばログインユーザーにしか表示させてはいけないものがキャッシュされて非ログインユーザーに表示されてしまう、のようなことが起こりえます。なのでキャッシュは動作をよく理解した上で使用しないとリスクが伴うものではあります。
2021年12月10日 12:22 PM #93897 -
投稿者投稿
- トピック「特定のページのみ追尾サイドバーを表示したい」には新しい返信をつけることはできません。