特定のグーテンベルクブロックがページに存在する場合、異なるスタイルを持つデザインに取り組んでいます。つまり、最初のブロックがカスタムビルドのグーテンベルクブロックである場合、post_titleはデザインの選択により他の場所でレンダリングされます。
WordPressには、post_contentにあるすべてのGutenbergブロックのリストを取得する機能がありますか?
特定のグーテンベルクブロックがページに存在する場合、異なるスタイルを持つデザインに取り組んでいます。つまり、最初のブロックがカスタムビルドのグーテンベルクブロックである場合、post_titleはデザインの選択により他の場所でレンダリングされます。
WordPressには、post_contentにあるすべてのGutenbergブロックのリストを取得する機能がありますか?
回答:
WordPress 5.0以降には、次の機能がありますparse_blocks()
。投稿の最初のブロックが見出しブロックかどうかを確認するには、次のようにします。
$post = get_post();
if ( has_blocks( $post->post_content ) ) {
$blocks = parse_blocks( $post->post_content );
if ( $blocks[0]['blockName'] === 'core/heading' ) {
}
}
has_blocks($blockName)
代わりにgithub.com/WordPress/gutenberg/pull/8631/commits/…を使用してください。ありますhas_block()
(「s」はなし)。
parse_blocks()
- NULL配列要素としてリターンが存在しないブロックcore.trac.wordpress.org/ticket/45312
執筆時点で使用しているソリューションは、Gutenberg HTMLコメントのpost_contentを確認してください。将来のグーテンベルクの変更により、これは将来機能しない可能性があります。
<?php
$post_content = get_the_content( get_the_ID() ); // Get the post_content
preg_match_all('<!-- /wp:(.*?) -->', $post_content, $blocks); // Get all matches in between <!-- /wp: --> strings
// $blocks[1] contains the names of all the blocks present in the post_content
if ( in_array( 'heading', $blocks[1] ) ) {
// Post content contains a wp:heading block
}
else {
// Post content does not contain a wp:heading block
}