wordpress 注册acf块的字段无效

dced5bon  于 2023-08-03  发布在  WordPress
关注(0)|答案(1)|浏览(124)

我用acf_register_block_type创建了一个块,它在编辑器中显示了完整的块。我是这样做的

//custom block with acf
function mab_register_acf_block_types() {
    acf_register_block_type( [
        'name'            => 'blockquote',
        'title'           => __( 'Blockquote' ),
        'description'     => __( 'My blockquote block.' ),
        'render_template' => dirname( __file__ ) . '/blocks/blockquote/blockquote.php',
        'category'        => 'formatting',
        'icon'            => 'format-quote',
    ] );
}

if ( function_exists( 'acf_register_block_type' ) ) {
    add_action( 'acf/init', 'mab_register_acf_block_types' );
}

字符串
但是我想注册这个块的字段,它实际上不起作用。字段的注册以这种方式完成

add_action('acf/init', function () {
        if( function_exists('acf_add_local_field_group') ):
    
            acf_add_local_field_group(array (
                'key' => 'group_1',
                'title' => 'My Group',
                'fields' => array (
                    array (
                        'key' => 'field_1',
                        'label' => 'Sub Title',
                        'name' => 'sub_title',
                        'type' => 'text',
                        'prefix' => '',
                        'instructions' => '',
                        'required' => 0,
                        'conditional_logic' => 0,
                        'wrapper' => array (
                            'width' => '',
                            'class' => '',
                            'id' => '',
                        ),
                        'default_value' => '',
                        'placeholder' => '',
                        'prepend' => '',
                        'append' => '',
                        'maxlength' => '',
                        'readonly' => 0,
                        'disabled' => 0,
                    )
                ),
                'location' => array (
                    array (
                        array (
                            'param' => 'block',
                            'operator' => '==',
                            'value' => 'blockquote',
                        ),
                    ),
                ),
                'menu_order' => 0,
                'position' => 'normal',
                'style' => 'default',
                'label_placement' => 'top',
                'instruction_placement' => 'label',
                'hide_on_screen' => '',
            ));
    
        endif;
    });


如果我将位置设置为像post_type这样的其他值,这是可以的,这意味着注册字段的代码适用于post_type,但如果我将位置设置为block == 'blockquote',它就不起作用了。是我做错了什么还是acf的bug?

vbopmzt1

vbopmzt11#

我使用ACF(临)6.1.7,但当注册字段;回调函数被挂接到'acf/include_fields'而不是'acf/init'。
其次,很可能是您的问题的原因:即使没有在acf_register_block_type(name)中指定命名空间(并且不应该在acf_register_block_type中指定命名空间);回调函数acf_add_local_field_group中的['location'][0][0]['value']应该是'acf/blockquote',而不仅仅是'blockquote'。

相关问题