Closed g-reate closed 5 years ago
プルリクありがとうございます!
ちょっと気になったところをまとめてみます。
use_block_editor_for_post( $post )
でその投稿がブロックエディタで作成されたものかクラシックエディタで作成されたものかがわかるので、global $post
して use_block_editor_for_post( $post )
するようにすると良いと思います。apply_filters( 'replace_editor', false, $post ) !== true
の部分は不要かなと。ちなみに、たまーにコアのフィルターフックって引数が変わって、プラグインとかから同じように apply_filters
してるとコケちゃうことがあるので、個人的にはあまりコアのフックを apply_filters
しないほうが良いのではと思います。use_block_editor_for_post( $post )
が true
の場合は $has_wpautop = true;
、false
の場合はクラシックエディタ時の判定( https://github.com/inc2734/mw-wp-form/blob/dfcc8a69b37b420c3bf6a7b59de9f696456cbac9/classes/services/class.exec-shortcode.php#L295-L296 )が実行されるようになると良いかと思います!なのでまとめるとこんな感じでしょうか…。
global $post;
$has_wpautop = false;
if ( function_exists( 'use_block_editor_for_post' ) && use_block_editor_for_post( $post ) ) {
$has_wpautop = true;
} elseif ( function_exists( 'is_gutenberg_page' ) ) {
$has_wpautop = true;
} elseif ( has_filter( 'the_content', 'wpautop' ) ) {
$has_wpautop = true;
}
動作テストしていただけると助かります!
なるほど……。了解しました。 検証してまた報告します!
そういえば…… 以前上記コードで検証したら、ブロックエディタで改行が効かなかったんですよね……。 先程再検証したのですが、やはりWP5のブロックエディタで改行されません。
プルリクで送ったコードだと、ちゃんと改行されます。
なんと! Gutenberg 用の is_gutenberg_page
について、functions_exist
でのチェックだけして is_gutenberg_page
を実行させてないのは実行タイミング的に正しい値が帰ってこなかったからなのですが、ブロックエディター用の use_block_editor_for_post
でも同じような問題があるのかもですね…。
ちょっとこちらでも試してみます。
試してみました! use_block_editor_for_post()
は管理画面用の関数みたいで、表側では使えなかった(定義されてない)ので、別な方法がないかなと探したところ、
https://github.com/WordPress/WordPress/blob/master/wp-includes/blocks.php#L239-L275
で僕がやろうとしていたことと似たような処理をしていたので、それに乗っかる形で修正してみました。僕の方で軽く動作テストしたところ問題なさそうでしたが、念の為 @g-reate さんのほうでも試してみていただけると助かります。
検証したところ問題なさそうでしたー! 答えはやっぱりコアにあるんだな……。
検証ありがとうございます!マージしたらリリースしますね
自動改行対応