wip: preview

This commit is contained in:
2025-09-24 12:36:12 -04:00
parent cd4cf2e3e3
commit 0bffe2768d
5 changed files with 53 additions and 61 deletions

View File

@@ -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;
}