generated from pascalmartineau/wp-skeleton
wip: preview
This commit is contained in:
74
wp-content/themes/ccat/includes/vendors/acf.php
vendored
74
wp-content/themes/ccat/includes/vendors/acf.php
vendored
@@ -1,5 +1,12 @@
|
||||
<?php
|
||||
|
||||
// Google Maps API key
|
||||
add_filter( 'acf/fields/google_map/api', 'ccat_acf_google_map_api' );
|
||||
function ccat_acf_google_map_api( $api ) {
|
||||
$api['key'] = 'AIzaSyCoB9_Um059jyenVcFfpXTBq-zZAxlBPqk';
|
||||
return $api;
|
||||
}
|
||||
|
||||
// Override template file path for ACF previews
|
||||
add_filter( 'acfe/flexible/render/template', 'ccat_acfe_flexible_render_template', 10, 4 );
|
||||
function ccat_acfe_flexible_render_template( $file, $field, $layout, $is_preview ) {
|
||||
@@ -42,6 +49,13 @@ function ccat_acf_init() {
|
||||
acf_update_setting( 'acfe/modules/templates', false );
|
||||
}
|
||||
|
||||
// Helper: Get GraphQL field group name for flexible content layout
|
||||
function ccat_get_graphql_field_group_name( $field_group_key, $layout_name ) {
|
||||
$field_group_name = \WPGraphQL\Utils\Utils::format_type_name( $field_group_key );
|
||||
$layout_type_name = \WPGraphQL\Utils\Utils::format_type_name( $layout_name );
|
||||
return "{$field_group_name}{$layout_type_name}Layout";
|
||||
}
|
||||
|
||||
// Helper: Convert field name to GraphQL format
|
||||
function ccat_get_graphql_field_name( $field_config ) {
|
||||
return ! empty( $field_config['graphql_field_name'] )
|
||||
@@ -65,60 +79,18 @@ function ccat_get_graphql_fields_value( $fields, $data ) {
|
||||
return $result;
|
||||
}
|
||||
|
||||
// Helper: Get current row data in GraphQL format
|
||||
function ccat_get_graphql_row_value() {
|
||||
global $acf_loop;
|
||||
// Helper: Get current row's preview data in useSection format
|
||||
function ccat_get_graphql_preview_data() {
|
||||
if ( empty( $layout_name = get_row_layout() ) ) {
|
||||
return array();
|
||||
throw new Exception( "Erreur de prévisualisation (section invalide)" );
|
||||
}
|
||||
|
||||
// Get layout config
|
||||
$layout_config = null;
|
||||
if ( ! empty( $acf_loop['active']['field']['layouts'] ) ) {
|
||||
foreach ( $acf_loop['active']['field']['layouts'] as $layout ) {
|
||||
if ( $layout['name'] === $layout_name ) {
|
||||
$layout_config = $layout;
|
||||
break;
|
||||
}
|
||||
$result = array(
|
||||
'fieldGroupName' => ccat_get_graphql_field_group_name( 'group_abstract_builder', $layout_name ),
|
||||
);
|
||||
foreach ( get_row( true ) as $key => $value ) {
|
||||
if ( strpos( $key, 'acf_fc_layout' ) !== 0 && strpos( $key, '_' ) !== 0 ) {
|
||||
$result[ ccat_get_graphql_field_name( array( 'name' => $key ) ) ] = $value;
|
||||
}
|
||||
}
|
||||
|
||||
// Fallback to raw data if no config
|
||||
if ( ! $layout_config || ! isset( $layout_config['sub_fields'] ) ) {
|
||||
$raw_data = get_row( true );
|
||||
$result = array();
|
||||
foreach ( $raw_data as $key => $value ) {
|
||||
if ( strpos( $key, 'acf_fc_layout' ) !== 0 && strpos( $key, '_' ) !== 0 ) {
|
||||
$result[ ccat_get_graphql_field_name( array( 'name' => $key ) ) ] = $value;
|
||||
}
|
||||
}
|
||||
return $result;
|
||||
}
|
||||
|
||||
// Process fields with proper ACF access
|
||||
$result = array();
|
||||
foreach ( $layout_config['sub_fields'] as $field ) {
|
||||
$key = ccat_get_graphql_field_name( $field );
|
||||
if ( $field['type'] === 'repeater' && $field['name'] === 'layout_settings' ) {
|
||||
if ( have_rows( 'layout_settings' ) ) {
|
||||
the_row();
|
||||
$result[ $key ] = ccat_get_graphql_fields_value( $field['sub_fields'], get_row( true ) );
|
||||
wp_reset_postdata();
|
||||
}
|
||||
} else {
|
||||
$value = get_sub_field( $field['name'] );
|
||||
$result[ $key ] = isset( $field['sub_fields'] ) && $value
|
||||
? ccat_get_graphql_fields_value( $field['sub_fields'], $value )
|
||||
: $value;
|
||||
}
|
||||
}
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
// Google Maps API key
|
||||
add_filter( 'acf/fields/google_map/api', 'ccat_acf_google_map_api' );
|
||||
function ccat_acf_google_map_api( $api ) {
|
||||
$api['key'] = 'AIzaSyCoB9_Um059jyenVcFfpXTBq-zZAxlBPqk';
|
||||
return $api;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user