1

と呼ばれる初期化しようとしている新しいブロックがありheroます。現在、そのブロックに ACF フィールド グループを割り当てようとしていますが、現在 WordPress バックエンドで次のように表示されています。

ここに画像の説明を入力

ブロックを作成してブロック タイプを登録しましたが、どこが機能していないのかわかりません。

これが私のアプローチです:

/acf-blocks/blocks.php

<?php

function register_acf_block_types() {

    $hero = array(
        'name'              => 'hero',
        'title'             => __('Hero'),
        'description'       => __(''),
        'render_callback'   => 'block_render',
        'category'          => 'formatting',
        'icon'              => 'admin-comments',
        'keywords'          => array( 'hero' ),
    );

}


$blocks = [
  $hero
];

return $blocks;


// Check if function exists, and hook into setup
if( function_exists('acf_register_block_type') ) {
  add_action('acf/init', 'register_acf_block_types');
}


?>

/acf-blocks/render.php

<?php

/**
 *  This is the callback that renders the block.
 */

 function block_render( $block ) {

    // convert name ("acf/testimonial") into path friendly slug ("testimonial")
    $slug = str_replace('acf/', '', $block['name']);

    // include a template part from within the "template-parts/block" folder
    if( file_exists( get_theme_file_path("/template-parts/block/content-{$slug}.php") ) ) {
        include( get_theme_file_path("/template-parts/block/content-{$slug}.php") );
    }
 }

?>

/acf-blocks/functions.php

<?php


function block_acf_init(){
  $blocks = require(__DIR__.'/inc/acf-blocks/blocks.php');

  foreach($blocks as $block) {
    acf_register_block($block);
  }
}


?>

/template-parts/block/hero.php

<?php

/*
* Block Name: hero
*/


?>

ここに私のフォルダ構造があります:

theme
   inc
      acf-blocks
         blocks.php
         functions.php
         render.php
   template-parts
      blocks
         hero.php
4

1 に答える 1