概要
has_blocks 関数は、指定された投稿内容に何等かの投稿ブロックが含まれているか調べるための関数です。この関数は以下のような機能の実装に役立ちます。
- 投稿の内容によって異なる出力を行う条件分岐
- カスタムテンプレートの選択
- 特定のコンテンツが存在する場合の追加CSSやJavaScriptの読み込み
- 投稿のサムネイルの表示を制御
- コンテンツに基づいたサイドバーの表示切替
- 各タイプの投稿に特化したメタボックスの表示
- プラグインが生成する独自のブロックに基づく機能追加
- ユーザーインターフェースのカスタマイズ
構文
has_blocks( string $post_content )
パラメータ
- $post_content (string): 投稿のコンテンツを指定します。
戻り値
- (bool): 投稿内容にブロックが存在する場合は
true、そうでない場合はfalseを返します。
関連する関数
使用可能なバージョン
- WordPress 5.0 以降
コアファイルのパス
wp-includes/content.php
サンプルコード
サンプルコード1
if ( has_blocks( $post->post_content ) ) {
echo '<p>This post has blocks!</p>';
}
このコードは、投稿内容にブロックがあるかどうかをチェックし、あればメッセージを表示します。
サンプルコード2
if ( has_blocks( get_the_content() ) ) {
// 特定のスタイルを追加
wp_enqueue_style( 'custom-style' );
}
このコードは、投稿にブロックが含まれていた場合、カスタムスタイルシートを読み込みます。
サンプルコード3
$template = 'default';
if ( has_blocks( $post->post_content ) ) {
$template = 'has-blocks';
}
get_template_part( 'template-parts/content', $template );
このコードは、投稿にブロックが含まれているかによって、異なるテンプレートパーツを読み込む設定を行います。
サンプルコード4
function check_for_blocks_and_modify_content( $content ) {
if ( has_blocks( $content ) ) {
return $content . '<p>Additional Information</p>';
}
return $content;
}
add_filter( 'the_content', 'check_for_blocks_and_modify_content' );
このコードは、投稿の内容にブロックが含まれている場合、その後に追加情報を付加します。
サンプルコード5
if ( has_blocks( get_post_field( 'post_content', $post_id ) ) ) {
dynamic_sidebar( 'my-sidebar' );
}
このコードは、指定した投稿の内容にブロックが含まれている場合のみ、特定のサイドバーを表示します。
この関数のアクションでの使用可能性
| アクション名 | 使用可能性 |
|---|---|
| mu_plugin_loaded | |
| registered_post_type | |
| plugins_loaded | |
| wp_roles_init | |
| setup_theme | |
| after_setup_theme | |
| set_current_user | |
| init | |
| register_sidebar | |
| wp_loaded | |
| send_headers | |
| parse_query | |
| pre_get_posts | |
| wp | |
| template_redirect | |
| get_header | |
| wp_head |
特定のワードプレスバージョンで非推奨または削除された場合は以下の通りです。
- 非推奨または削除されたバージョン: なし