Skip to content

Commit 0ea2f27

Browse files
committed
- update flexible content field type to make sure there are layouts defined before looping over them
- update Repeater to return early if cloned
1 parent d34ee83 commit 0ea2f27

File tree

2 files changed

+26
-24
lines changed

2 files changed

+26
-24
lines changed

src/FieldType/FlexibleContent.php

Lines changed: 25 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -51,33 +51,34 @@ public static function register_field_type(): void {
5151
$layouts = [];
5252

5353
// If there are no layouts, return a NULL type
54-
if ( empty( $acf_field['layouts'] ) ) {
55-
return 'NULL';
56-
}
54+
if ( ! empty( $acf_field['layouts'] ) ) {
5755

58-
foreach ( $acf_field['layouts'] as $layout ) {
59-
$layout_type_name = Utils::format_type_name( $layout_interface_prefix . ' ' . $field_config->get_registry()->get_field_group_graphql_type_name( $layout ) ) . 'Layout';
60-
$layout['interfaces'] = [ $layout_interface_name ];
61-
$layout['eagerlyLoadType'] = true;
62-
$layout['isFlexLayout'] = true;
63-
$layout['parent_layout_group'] = $layout;
64-
$layout['graphql_type_name'] = $layout_type_name;
65-
66-
$sub_fields = array_filter(
67-
array_map(
68-
static function ( $field ) use ( $layout ) {
69-
$field['graphql_types'] = [];
70-
$field['parent_layout_group'] = $layout;
71-
$field['isFlexLayoutField'] = true;
72-
return isset( $field['parent_layout'] ) && $layout['key'] === $field['parent_layout'] ? $field : null;
73-
},
74-
acf_get_raw_fields( $layout['key'] )
75-
)
76-
);
56+
foreach ( $acf_field['layouts'] as $layout ) {
57+
$layout_type_name = Utils::format_type_name( $layout_interface_prefix . ' ' . $field_config->get_registry()->get_field_group_graphql_type_name( $layout ) ) . 'Layout';
58+
$layout['interfaces'] = [ $layout_interface_name ];
59+
$layout['eagerlyLoadType'] = true;
60+
$layout['isFlexLayout'] = true;
61+
$layout['parent_layout_group'] = $layout;
62+
$layout['graphql_type_name'] = $layout_type_name;
63+
64+
$sub_fields = array_filter(
65+
array_map(
66+
static function( $field ) use ( $layout ) {
67+
$field['graphql_types'] = [];
68+
$field['parent_layout_group'] = $layout;
69+
$field['isFlexLayoutField'] = true;
70+
71+
return isset( $field['parent_layout'] ) && $layout['key'] === $field['parent_layout'] ? $field : null;
72+
},
73+
acf_get_raw_fields( $layout['key'] )
74+
)
75+
);
76+
77+
$layout['sub_fields'] = array_merge( $sub_fields, $layout['sub_fields'] );
7778

78-
$layout['sub_fields'] = array_merge( $sub_fields, $layout['sub_fields'] );
79+
$layouts[] = $layout;
80+
}
7981

80-
$layouts[] = $layout;
8182
}
8283

8384
if ( ! empty( $layouts ) ) {

src/FieldType/Repeater.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ public static function register_field_type(): void {
2929
$cloned_parent = ! empty( $cloned_from ) ? $field_config->get_parent_graphql_type_name( $cloned_from ) : null;
3030
if ( ! empty( $cloned_parent ) ) {
3131
$type_name = Utils::format_type_name( $cloned_parent . ' ' . $field_name );
32+
return [ 'list_of' => $type_name ];
3233
}
3334
}
3435

0 commit comments

Comments
 (0)