acf_render_block_callback()


関数acf_render_block_callback()は、WordPressのAdvanced Custom Fields(ACF)プラグインで使用される関数で、カスタムブロックのレンダリングを行うために利用されます。この関数は、ブロックの属性やコンテンツを元にHTMLを生成し、フロントエンドに表示します。

構文

acf_render_block_callback( array $block, string $content = '', bool $is_preview = false, int $post_id = 0 );

引数の説明:

  • $block(array) — ブロックの属性や設定を含む配列。
  • $content(string) — ブロックの既存のコンテンツ。デフォルトは空文字列。
  • $is_preview(bool) — プレビューモードかどうかを示すフラグ。デフォルトはfalse。
  • $post_id(int) — 現在の投稿ID。デフォルトは0。

例1: 基本的なブロックのレンダリング

この例では、シンプルなブロックをレンダリングします。

function render_custom_block( $block, $content, $is_preview, $post_id ) { echo '<div class="custom-block">' . $content . '</div>'; } acf_render_block_callback( 'custom_block', 'render_custom_block' );

例2: ブロック属性を使用したレンダリング

ブロックの属性を使用して、動的なコンテンツを表示します。

function render_custom_block( $block, $content, $is_preview, $post_id ) { $title = $block['title']; echo '<div class="custom-block"><h2>' . esc_html( $title ) . '</h2>' . $content . '</div>'; } acf_render_block_callback( 'custom_block', 'render_custom_block' );

例3: プレビューモードの処理

プレビューモード時に特別なスタイルを適用します。

function render_custom_block( $block, $content, $is_preview, $post_id ) { $class = $is_preview ? 'preview-mode' : ''; echo '<div class="custom-block ' . $class . '">' . $content . '</div>'; } acf_render_block_callback( 'custom_block', 'render_custom_block' );

例4: 投稿IDを使用したデータ取得

現在の投稿IDを使用して、関連データを取得します。

function render_custom_block( $block, $content, $is_preview, $post_id ) { $author_id = get_post_field( 'post_author', $post_id ); $author_name = get_the_author_meta( 'display_name', $author_id ); echo '<div class="custom-block">投稿者: ' . esc_html( $author_name ) . '</div>'; } acf_render_block_callback( 'custom_block', 'render_custom_block' );

例5: 条件付きレンダリング

特定の条件に基づいてブロックの内容を変更します。

function render_custom_block( $block, $content, $is_preview, $post_id ) { if ( $block['show_title'] ) { echo '<div class="custom-block"><h2>タイトルを表示</h2>' . $content . '</div>'; } else { echo '<div class="custom-block">' . $content . '</div>'; } } acf_render_block_callback( 'custom_block', 'render_custom_block' );

注意点:

  • ブロックの属性やコンテンツを適切にエスケープしてセキュリティを確保してください。
  • プレビューモードと本番モードの違いを考慮して開発を行ってください。

関連機能: