array( 'name' => "Modèles", 'menu_name' => "Modèles", 'singular_name' => "Modèle", 'add_new' => "Ajouter", 'add_new_item' => "Ajouter un modèle", 'new_item' => "Nouveau modèle", 'edit_item' => "Modifier le modèle", 'view_item' => "Voir le modèle", 'view_items' => "Voir les modèles", 'search_items' => "Rechercher des modèles", 'not_found' => "Aucun modèle trouvé", 'not_found_in_trash' => "Aucun modèle trouvé dans la corbeille", 'parent_item_colon' => "Modèle parent :", 'all_items' => "Tous les modèles", 'archives' => "Archives des modèles", 'attributes' => "Attributs du modèle", 'insert_into_item' => "Insérer dans le modèle", 'uploaded_to_this_item' => "Téléversé dans ce modèle", 'featured_image' => "Vignette", 'set_featured_image' => "Définir la vignette", 'remove_featured_image' => "Supprimer la vignette", 'use_featured_image' => "Utiliser comme vignette", 'filter_items_list' => "Filtrer la liste des modèles", 'items_list_navigation' => "Navigation dans la liste des modèles", 'items_list' => "Liste des modèles", 'item_published' => "Modèle publié.", 'item_published_privately' => "Modèle publié en privé.", 'item_reverted_to_draft' => "Modèle remis au brouillon.", 'item_scheduled' => "Modèle planifié.", 'item_updated' => "Modèle mis à jour.", ), 'public' => false, 'hierarchical' => false, 'show_ui' => true, 'show_in_nav_menus' => false, 'supports' => array( 'title', 'revisions' ), 'has_archive' => false, 'rewrite' => false, 'query_var' => true, 'menu_icon' => 'dashicons-clipboard', 'show_in_rest' => false, 'rest_base' => 'template', 'rest_controller_class' => 'WP_REST_Posts_Controller', 'show_in_graphql' => true, 'graphql_single_name' => "Template", 'graphql_plural_name' => "Templates", 'graphql_interfaces' => array( 'Node' ), ) ); } // Custom 'template' post updated messages add_filter( 'post_updated_messages', 'headless_template_post_updated_messages' ); function headless_template_post_updated_messages( $messages ) { global $post; $permalink = get_permalink( $post ); $preview_post_link_html = sprintf( ' %2$s', esc_url( get_preview_post_link( $post ) ), "Prévisualiser le modèle" ); $scheduled_post_link_html = sprintf( ' %2$s', esc_url( $permalink ), "Prévisualiser le modèle" ); $scheduled_date = date_i18n( "j M Y à H:i", strtotime( $post->post_date ) ); $view_post_link_html = sprintf( ' %2$s', esc_url( $permalink ), "Voir le modèle" ); $messages['template'] = array( 0 => '', 1 => "Modèle mis à jour." . $view_post_link_html, 2 => "Champ personnalisé mis à jour.", 3 => "Champ personnalisé supprimé.", 4 => "Modèle mis à jour.", 5 => isset( $_GET['revision'] ) ? sprintf( "Modèle restauré à partir de la révision du %s", wp_post_revision_title( (int) $_GET['revision'], false ) ) : false, 6 => "Modèle publié." . $view_post_link_html, 7 => "Modèle enregistré.", 8 => "Modèle soumis." . $preview_post_link_html, 9 => sprintf( "Modèle planifié pour le : %s.", '' . $scheduled_date . '' ) . $scheduled_post_link_html, 10 => "Brouillon du modèle mis à jour." . $preview_post_link_html, ); return $messages; } // Helper: Replace template(s) in sections value recursively function headless_template_replace_sections( $sections ) { if ( ! is_array( $sections ) ) { return $sections; } $processed_sections = array(); foreach ( $sections as $section ) { if ( empty( $layout = $section['acf_fc_layout'] ?? false ) ) { continue; } if ( $layout !== 'template' ) { $processed_sections[] = $section; continue; } if ( empty( $template_id = $section['template'] ?? false ) ) { continue; } $template_sections = get_field( 'builder_sections', $template_id ); if ( is_array( $template_sections ) ) { $expanded_sections = headless_template_replace_sections( $template_sections ); foreach ( $expanded_sections as $expanded_section ) { $processed_sections[] = $expanded_section; } } } return $processed_sections; } // Replace template(s) in GraphQL builder sections value add_filter( 'wpgraphql/acf/field_value', 'headless_graphql_process_sections', 10, 2 ); function headless_graphql_process_sections( $value, $field_config ) { if ( 'builder' !== $field_config['name'] ?? false || ! is_array( $value['sections'] ?? false ) ) { return $value; } $value['sections'] = headless_template_replace_sections( $value['sections'] ); return $value; }