如何将 ACF Gutinburg 块数据添加到自定义页面?

时间:2021-06-30 14:22:11

标签: wordpress advanced-custom-fields gutenberg-blocks

我想为我的 front-page.php 创建自定义 ACF 古丁堡块我已经在 Fuction.php 中注册了 ACF 块,如下所示:

 function acf_portfolio_item_block() {
    if( function_exists('acf_register_block') ) {
        acf_register_block(array(
            'name'              => 'front-page',
            'title'             => __('Front Page'),
            'description'       => __('A custom block for Front Page'),
            'render_template'   => get_template_directory().'front-page.php',
            'category'          => 'layout',
            'icon'              => 'excerpt-view',
            'keywords'          => array( 'front','front-page','home' ),            
        ));
        
    }
}

add_action('acf/init', 'acf_portfolio_item_block');

create Field Group

我在 front-page.php 上的块的 HTML:

 <?php
$title1 = get_field( 'title' );
$subtitle1 = get_field( 'subtitle' );
$description1 = get_field( 'description' );
?>
    <section class="hero-sec">
        <div class="container">
            <div class="row ">
                <div class="col-md-5 hero-col-1">
                    <h1 class="fw-bold">
                    <?php echo $title1; ?> 
                    </h1>
                    <h1>
                   <?php echo $subtitle1; ?>
                    </h1>   
                    <p>
                        <?php echo $description1;?>   
                    </p>
                </div>
            </div>
        </div>
    </section>

但它无法在首页 .php 上显示数据

1 个答案:

答案 0 :(得分:0)

WordPress 中的 allowed_block_types 过滤器钩子允许您指定在特定条件下允许哪些块。

由于您在创建自定义块时使用了 ACF 并且您将块命名为 name => 'front-page',因此最终块名称将为:acf/front-page

function wp123_allowed_block_types($allowed_block_types, $post) {

  if(is_front_page()) {
    return [
      'acf/front-page'
    ];
  }

  return $allowed_block_types;

}
add_filter('allowed_block_types', 'wp123_allowed_block_types', 10, 2);