2022.02.09
PHP/WordPress/プラグイン
Lazy Blocksで勝手に出力されるdivをまとめて消す(改)
みなさんお久しぶりです。
今回は、Lazy Blocksを利用した際に勝手に出力されるdivをまとめて消す方法について
めちゃくちゃ簡単でわかりやすい方法を入手したので、それを共有したいと思います。
勝手に出力されるdiv
勝手に出力されるdivってそもそもなにという方にむけて解説します。
コードを早く見せやがれっという方は、スクロールしてください。
Lazy Blocksでは出力する際に、divで囲ってきます。
以上です。
実際、見た目には何も影響ありませんが、気になる人や、jqueryなどで親子関係を指定したい方には厄介になってくるでしょうか。
基本的には、一つ単位であればそのdivを削除するコードは存在します。
そのあたりのことは、過去のBlogや公式ドキュメントを参考にしてみてください。
さて、ここで問題なのは、大量にブロックが存在していた場合、その一つ一つに上記で紹介しているコードを指定しなくてはなりません。
それではとても面倒なので当ブログでも、スラッグを取得してみたり、ポストから取得してみたり、まとめて消せるように色々試行錯誤していたわけです。
しかし今回、Lazy Blocksのフォーラムを覗いていたら、めちゃくちゃ有用に示されていただけでなく、開発者自身も使えましたと返信しているコードが存在しました。
divの削除コード(改)
functions.php
add_filter( 'lzb/block_render/allow_wrapper', '__return_false' );
たったこれだけ。
逆になんで思い付かなかったんだろうという後悔があります。
簡単に解説しますが、ブロックを表示させるときにdivで囲う機能を取りやめる。という感じです。
公式では、指定したslugからdivを削除していたため、いかにしてslugを取得してくるかに注視しすぎていました。
機能をキャンセルさせるフィルターを後からつけるだけ。。。灯台下暗しです。。
最後に
フォーラム(英語)のリンクも載せておきますが、開発者も気づいていなかったような口ぶりじゃないですかね。
しかし、今回でdivをまとめて消す方法について、いったん終止符が打たれたかなと思います。
開発者自身も試したら動いたということを認めているので、今後のアップデート次第でもありますが、私はこのコードを使っていこうかと思います。
今後もまた何かあれば、更新していきます〜。