微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

尝试为古腾堡创建 ACF 块时“不存在块类型”

如何解决尝试为古腾堡创建 ACF 块时“不存在块类型”

我正在尝试初始化一个名为 hero 的新块。目前,我正在尝试为该块分配一个 ACF 字段组,但目前在 wordpress 后端看到这一点:

enter image description here

我已经创建了块并注册了块类型,但看不到哪里有问题?

这是我的方法

/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

解决方法

将 foreach 循环中的 ACF 函数(在 /acf-blocks/functions.php 中)更改为:

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。