Hacktoberfest 2026: những issue maintainer đã đánh dấu cho tháng Mười, đang mở và phù hợp người mới. Xem issue Hacktoberfest

First custom block added to a post renders fields in sidebar instead of main well, before save/refresh

Đang mở
#1,020 3 bình luận 1 reaction 0 người được giao Xem trên GitHub

Chưa có ai nhận issue này.

Đánh giá

Độ khó
4/5
Thời gian dự kiến
3-5 ngày
Mức phù hợp với người mới
52/100
Loại issue
Lỗi
Độ rõ ràng
Khá rõ ràng
Mức độ hoạt động
Ít trao đổi
Công nghệ
php, wordpress
Lĩnh vực
frontend, web-dev

Hướng nghiên cứu

Bắt đầu với việc đăng ký row_init_block_conveyor và thiết lập mode => 'auto', sau đó tái hiện trường hợp khối đầu tiên trong trình soạn thảo WordPress bằng nhóm trường ACF được cung cấp. Công việc được xem là hoàn tất khi các trường của mọi khối ACF tùy chỉnh được render inline trên canvas của trình soạn thảo ngay lần chèn đầu tiên.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Mô tả

Describe the bug
When inserting a custom ACF block into a post that contains no other custom ACF blocks, the block's fields render in the right-rail Block panel instead of inline in the editor canvas. All subsequently added blocks (of any ACF block type) render correctly in the canvas. The affected block also renders correctly after refreshing the page.

To reproduce
Open any post that contains no custom ACF blocks
Insert a custom ACF block (that was registered with 'mode' => 'auto')
Observe that block fields render in the right-rail Block panel, not in the editor canvas
Insert any second custom ACF block
Observe that the second block's fields render correctly in the editor canvas
Refresh the page — the first block now also renders correctly

The behavior is the same across block types: whichever block is inserted first exhibits the bug, regardless of type.

Expected behavior
All custom ACF block fields render in the editor canvas, consistently, on first insertion.

Screenshots or Video

first custom block in post:
Image

same block added second:
Image

Code

<?php
/**
 *  Conveyor Gallery Block
 */

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

function row_init_block_conveyor() {
	if( function_exists('acf_register_block_type') ) {
		acf_register_block_type(array(
			'name'            => 'conveyor-gallery',
			'title'           => __('Conveyor Gallery'),
			'description'     => __('Insert scrolling text / sticky image gallery.'),
			'render_template' => 'admin/blocks/templates/conveyor-gallery-tpl.php',
			'category'        => 'media',
			'icon'            => 'id',
			'keywords'        => array('conveyor', 'gallery', 'sift', 'sticky', 'scrolly'),
			'supports'        => array(
				'color' => array(
					'text' => false,
					'background' => true,
					'gradients' => false
				), 
			),
			'mode' => 'auto'
		));
	}
}

if( function_exists('acf_add_local_field_group') ):

	$text_size_field = array(
		'key' => 'field_block_dd_1100',
		'label' => 'Text Size',
		'name' => 'text_size',
		'type' => 'button_group',
		'instructions' => '',
		'required' => 0,
		'conditional_logic' => 0,
		'choices' => array(
			'medium' => 'Medium',
			'large'  => 'Large',
			'xlarge' => 'X-Large',
		),
		'allow_null' => 0,
		'default_value' => 'medium',
		'layout' => 'horizontal',
		'return_format' => 'value'
	);

	$text_align_field = array(
		'key' => 'field_block_dd_1400',
		'label' => 'Text Alignment',
		'name' => 'text_alignment',
		'type' => 'button_group',
		'instructions' => '',
		'required' => 0,
		'conditional_logic' => 0,
		'choices' => array(
			'left'   => 'Left',
			'right'  => 'Right',
			'center' => 'Center',
		),
		'allow_null' => 0,
		'default_value' => 'center',
		'layout' => 'horizontal',
		'return_format' => 'value'
	);

	$text_background_field = array(
		'key' => 'field_block_dd_1200',
		'label' => 'Text Background',
		'name' => 'text_background',
		'type' => 'true_false',
		'instructions' => '',
		'required' => 0,
		'conditional_logic' => 0,
		'message' => '',
		'default_value' => 0,
		'ui' => 1,
		'ui_on_text' => 'On',
		'ui_off_text' => 'Off'
	);

	$background_color_field = array(
		'key' => 'field_block_dd_1300',
		'label' => 'Background Color',
		'name' => 'screen_background',
		'type' => 'button_group',
		'instructions' => '',
		'required' => 0,
		'conditional_logic' => 0,
		'choices' => array(
			'black' => 'Black',
			'grey' => 'Grey',
			'body' => 'Body',
		),
		'allow_null' => 0,
		'default_value' => '',
		'layout' => 'horizontal',
		'return_format' => 'value'
	);

	$media_type_field = array(
		'key' => 'field_block_dd_2100',
		'label' => 'Media',
		'name' => 'media',
		'type' => 'button_group',
		'instructions' => '',
		'required' => 0,
		'conditional_logic' => 0,
		'choices' => array(
			'image' => 'Image',
			'video' => 'Video',
		),
		'allow_null' => 0,
		'default_value' => 'image',
		'layout' => 'horizontal',
		'return_format' => 'value'
	);

	$img_field = array(
		'key' => 'field_block_dd_2200',
		'label' => 'Image',
		'name' => 'image',
		'type' => 'image',
		'instructions' => '',
		'required' => 1,
		'conditional_logic' => array(
			array(
				array(
					'field' => 'field_block_dd_2100',
					'operator' => '==',
					'value' => 'image',
				),
			),
		),
		'return_format' => 'array',
		'preview_size' => 'thumbnail',
		'library' => 'all'
	);

	$mobile_img_field = array(
		'key' => 'field_block_dd_2300',
		'label' => 'Mobile Image',
		'name' => 'mobile_image',
		'type' => 'image',
		'instructions' => '',
		'required' => 0,
		'conditional_logic' => array(
			array(
				array(
					'field' => 'field_block_dd_2100',
					'operator' => '==',
					'value' => 'image',
				),
			),
		),
		'return_format' => 'array',
		'preview_size' => 'thumbnail',
		'library' => 'all'
	);

	$video_type_field = array(
		'key' => 'field_block_dd_2400',
		'label' => 'Video Source',
		'name' => 'video_source',
		'type' => 'button_group',
		'instructions' => '',
		'required' => 0,
		'conditional_logic' => array(
			array(
				array(
					'field' => 'field_block_dd_2100',
					'operator' => '==',
					'value' => 'video',
				),
			),
		),
		'choices' => array(
			'vimeo'     => 'Vimeo',
			'wordpress' => 'WordPress',
		),
		'allow_null' => 0,
		'default_value' => 'vimeo',
		'layout' => 'horizontal',
		'return_format' => 'value',
	);

	$landscape_vimeo_field = array(
		'key' => 'field_block_dd_2500',
		'label' => 'Landscape Video',
		'name' => 'landscape_video_vimeo',
		'type' => 'url',
		'instructions' => '',
		'required' => 0,
		'conditional_logic' => array(
			array(
			array(
				'field' => 'field_block_dd_2100',
				'operator' => '==',
				'value' => 'video',
			),
			array(
				'field' => 'field_block_dd_2400',
				'operator' => '==',
				'value' => 'vimeo',
			),
			),
		),
		'default_value' => '',
		'placeholder' => ''
	);

	$landscape_vimeo_ratio_field = array(
		'key' => 'field_block_dd_2550',
		'label' => 'Aspect Ratio',
		'name' => 'landscape_vimeo_aspect_ratio',
		'type' => 'select',
		'instructions' => '',
		'required' => 1,
		'conditional_logic' => 0,
		'wrapper' => array(
			'width' => '',
			'class' => '',
			'id' => '',
		),
		'choices' => array(
			'16x9' => '16:9',
			'4x3' => '4:3',
			'1x1' => '1:1',
		),
		'conditional_logic' => array(
			array(
			array(
				'field' => 'field_block_dd_2100',
				'operator' => '==',
				'value' => 'video',
			),
			array(
				'field' => 'field_block_dd_2400',
				'operator' => '==',
				'value' => 'vimeo',
			),
			array(
				'field' => 'field_block_dd_2500',
				'operator' => '!=',
				'value' => '',
			),
			),
		),
		'default_value' => false,
		'allow_null' => 0,
		'multiple' => 0,
		'ui' => 0,
		'return_format' => 'value',
		'ajax' => 0,
		'placeholder' => ''
	);

	$portrait_vimeo_field = array(
		'key' => 'field_block_dd_2600',
		'label' => 'Portrait Video',
		'name' => 'portrait_video_vimeo',
		'type' => 'url',
		'instructions' => '',
		'required' => 0,
		'conditional_logic' => array(
			array(
				array(
					'field' => 'field_block_dd_2100',
					'operator' => '==',
					'value' => 'video',
				),
				array(
					'field' => 'field_block_dd_2400',
					'operator' => '==',
					'value' => 'vimeo',
				),
			),
		),
		'default_value' => '',
		'placeholder' => ''
	);

	$portrait_vimeo_ratio_field = array(
		'key' => 'field_block_dd_2650',
		'label' => 'Aspect Ratio',
		'name' => 'portrait_vimeo_aspect_ratio',
		'type' => 'select',
		'instructions' => '',
		'required' => 1,
		'conditional_logic' => 0,
		'wrapper' => array(
			'width' => '',
			'class' => '',
			'id' => '',
		),
		'choices' => array(
			'9x16' => '9:16',
			'6x13' => '6:13',
			'4x5' => '4:5'
		),
		'conditional_logic' => array(
			array(
				array(
					'field' => 'field_block_dd_2100',
					'operator' => '==',
					'value' => 'video',
				),
				array(
					'field' => 'field_block_dd_2400',
					'operator' => '==',
					'value' => 'vimeo',
				),
				array(
					'field' => 'field_block_dd_2600',
					'operator' => '!=',
					'value' => '',
				),
			),
		),
		'default_value' => false,
		'allow_null' => 0,
		'multiple' => 0,
		'ui' => 0,
		'return_format' => 'value',
		'ajax' => 0,
		'placeholder' => ''
	);

	$landscape_wp_field = array(
		'key' => 'field_block_dd_2700',
		'label' => 'Landscape Video',
		'name' => 'landscape_video_wordpress',
		'type' => 'file',
		'instructions' => '',
		'required' => 0,
		'conditional_logic' => array(
			array(
				array(
					'field' => 'field_block_dd_2100',
					'operator' => '==',
					'value' => 'video',
				),
				array(
					'field' => 'field_block_dd_2400',
					'operator' => '==',
					'value' => 'wordpress',
				),
			),
		),
		'return_format' => 'array',
		'library' => 'all',
		'min_size' => '',
		'max_size' => '',
		'mime_types' => 'mp4'
	);

	$portrait_wp_field = array(
		'key'   => 'field_block_dd_2800',
		'label' => 'Portrait Video',
		'name'  => 'portrait_video_wordpress',
		'type'  => 'file',
		'instructions' => '',
		'required' => 0,
		'conditional_logic' => array(
			array(
				array(
					'field' => 'field_block_dd_2100',
					'operator' => '==',
					'value' => 'video',
				),
				array(
					'field' => 'field_block_dd_2400',
					'operator' => '==',
					'value' => 'wordpress',
				),
			),
		),
		'return_format' => 'array',
		'library' => 'all',
		'min_size' => '',
		'max_size' => '',
		'mime_types' => 'mp4'
	);

	$text_field = array(
		'key' => 'field_block_dd_2900',
		'label' => 'Text',
		'name' => 'text',
		'type' => 'textarea',
		'instructions' => '',
		'required' => 1,
		'conditional_logic' => 0,
		'maxlength' => ''
	);

	acf_add_local_field_group(array(
		'key' => 'group_100e1000e1000',
		'title' => 'Conveyor Gallery',
		'fields' => array(
			array(
				'key' => 'field_block_dd_1000',
				'label' => 'Appearance',
				'name' => 'appearance',
				'type' => 'group',
				'instructions' => '',
				'required' => 0,
				'conditional_logic' => 0,
				'wrapper' => array(
					'width' => '',
					'class' => '',
					'id' => '',
				),
				'layout' => 'row',
				'sub_fields' => array(
					$text_size_field,
					$text_align_field,
					$text_background_field,
					$background_color_field,
				),
			),
			array(
				'key' => 'field_block_dd_2000',
				'label' => 'Screens',
				'name' => 'screens',
				'type' => 'repeater',
				'instructions' => '',
				'required' => 0,
				'conditional_logic' => 0,
				'wrapper' => array(
					'width' => '',
					'class' => '',
					'id' => '',
				),
				'collapsed' => 'field_block_dd_2900',
				'min' => 2,
				'max' => 0,
				'layout' => 'row',
				'button_label' => 'Add Screen',
				'sub_fields' => array(
					$media_type_field,
					$img_field,
					$mobile_img_field,
					$video_type_field,
					$landscape_vimeo_field,
					$landscape_vimeo_ratio_field,
					$portrait_vimeo_field,
					$portrait_vimeo_ratio_field,
					$landscape_wp_field,
					$portrait_wp_field,
					$text_field,
				),
			),
		),
		'location' => array(
			array(
				array(
					'param' => 'block',
					'operator' => '==',
					'value' => 'acf/conveyor-gallery',
				),
			),
		),
		'menu_order' => 0,
		'position' => 'normal',
		'style' => 'default',
		'label_placement' => 'top',
		'instruction_placement' => 'label',
		'hide_on_screen' => ''
	));

endif;

Version Information

WordPress Version: 7.0.1
PHP Version: 8.3.17
ACF Version: ACF PRO 6.8.6
Browser: Google Chrome v149

Ngôn ngữ chính
PHP
Star
948
Fork
198
Chỉ số merge pull request
Không có pull request nào được merge trong 30 ngày

Chuẩn bị môi trường

Dự án này không cung cấp dev container, Dockerfile hay hướng dẫn đóng góp, nên bạn cần tự thiết lập môi trường: hãy bắt đầu từ README và xem hướng dẫn đóng góp lần đầu của chúng tôi để biết các bước chung.

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của AdvancedCustomFields/acf

Tất cả issue của AdvancedCustomFields/acf

Issue tương tự

Thêm issue về PHP

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.