diff --git a/wp-content/themes/cascapedia-st-jules/assets/src/components/PageRenderer.tsx b/wp-content/themes/cascapedia-st-jules/assets/src/components/PageRenderer.tsx index 51a0576..3c9e8ee 100644 --- a/wp-content/themes/cascapedia-st-jules/assets/src/components/PageRenderer.tsx +++ b/wp-content/themes/cascapedia-st-jules/assets/src/components/PageRenderer.tsx @@ -44,40 +44,10 @@ declare global { } } -// WP's PHP serializer omits empty ACF fields, so sections coming from the CMS can -// be missing title/body/etc. Treat those missing-or-empty values as "fall back to -// the local content" instead of letting them blow up the React render. -function isEmptyValue(v: unknown): boolean { - if (v === null || v === undefined) return true; - if (typeof v === "string") return v === ""; - if (Array.isArray(v)) return v.length === 0; - if (typeof v === "object") { - const obj = v as Record; - if ("fr" in obj && "en" in obj) return !obj.fr && !obj.en; - } - return false; -} - -function mergeSection(local: SectionBlock | undefined, wp: SectionBlock): SectionBlock { - if (!local || local.type !== wp.type) return wp; - const merged: Record = { ...local }; - for (const [key, val] of Object.entries(wp)) { - if (!isEmptyValue(val)) merged[key] = val; - } - return merged as unknown as SectionBlock; -} - export function PageRenderer({ page }: { page: PageContent }) { const { t, locale } = useLocale(); const wpPage = window.__CASCA_PAGE__; - const wpSections = wpPage?.sections; - const renderedPage = wpSections?.length - ? ({ - ...page, - ...wpPage, - sections: wpSections.map((wpSec, i) => mergeSection(page.sections[i], wpSec)), - } as PageContent) - : page; + const renderedPage = wpPage?.sections?.length ? ({ ...page, ...wpPage } as PageContent) : page; // Per-page SEO (title + description). React 19 will hoist these to . useEffect(() => { diff --git a/wp-content/themes/cascapedia-st-jules/assets/src/components/sections/EventsList.tsx b/wp-content/themes/cascapedia-st-jules/assets/src/components/sections/EventsList.tsx index 1b2487d..0eb3c8f 100644 --- a/wp-content/themes/cascapedia-st-jules/assets/src/components/sections/EventsList.tsx +++ b/wp-content/themes/cascapedia-st-jules/assets/src/components/sections/EventsList.tsx @@ -4,7 +4,15 @@ import { Calendar, MapPin } from "lucide-react"; function formatDate(iso: string, locale: "fr" | "en") { const d = new Date(iso + "T00:00:00"); - return iso; + try + {return new Intl.DateTimeFormat(locale === "fr" ? "fr-CA" : "en-CA", { + day: "numeric", + month: "long", + year: "numeric", + }).format(d); + } catch { + return iso; + } } export function EventsList({ block }: { block: EventsListBlock }) { diff --git a/wp-content/themes/cascapedia-st-jules/includes/acf.php b/wp-content/themes/cascapedia-st-jules/includes/acf.php index 4428933..e9481fd 100644 --- a/wp-content/themes/cascapedia-st-jules/includes/acf.php +++ b/wp-content/themes/cascapedia-st-jules/includes/acf.php @@ -47,7 +47,7 @@ function cascapedia_st_jules_register_acf(): void { acf_add_local_field_group([ 'key' => 'group_document_fields', 'title' => 'Document', - 'fields' => [ csj_file('field_document_file', 'document_file', 'PDF'), csj_text('field_document_group', 'document_group', 'Groupe'), csj_date('field_document_date', 'document_date', 'Date') ], + 'fields' => [ csj_file('field_document_file', 'document_file', 'PDF'), csj_date('field_document_date', 'document_date', 'Date') ], 'location' => [[['param' => 'post_type', 'operator' => '==', 'value' => 'document']]], ]); acf_add_local_field_group([ diff --git a/wp-content/themes/cascapedia-st-jules/includes/cpt.php b/wp-content/themes/cascapedia-st-jules/includes/cpt.php index 60f171d..7bb9dde 100644 --- a/wp-content/themes/cascapedia-st-jules/includes/cpt.php +++ b/wp-content/themes/cascapedia-st-jules/includes/cpt.php @@ -26,4 +26,18 @@ function cascapedia_st_jules_register_content_types(): void { 'rewrite' => ['slug' => str_replace( '_', '-', $slug )], ] ); } + + register_taxonomy( 'document_category', ['document'], [ + 'labels' => [ + 'name' => 'Catégories de documents', + 'singular_name' => 'Catégorie de document', + 'add_new_item' => 'Ajouter une catégorie de document', + 'edit_item' => 'Modifier la catégorie de document', + ], + 'hierarchical' => true, + 'public' => true, + 'show_admin_column' => true, + 'show_in_rest' => true, + 'rewrite' => ['slug' => 'documents/categorie'], + ] ); } diff --git a/wp-content/themes/cascapedia-st-jules/includes/dynamic-data.php b/wp-content/themes/cascapedia-st-jules/includes/dynamic-data.php index 272dd35..7e666f1 100644 --- a/wp-content/themes/cascapedia-st-jules/includes/dynamic-data.php +++ b/wp-content/themes/cascapedia-st-jules/includes/dynamic-data.php @@ -67,7 +67,8 @@ function cascapedia_st_jules_get_documents(): array { ]); $groups = []; foreach ( $posts as $post ) { - $group = get_post_meta( $post->ID, 'document_group', true ) ?: __( 'Documents', 'cascapedia-st-jules' ); + $terms = get_the_terms( $post, 'document_category' ); + $group = ( ! is_wp_error( $terms ) && ! empty( $terms ) ) ? $terms[0]->name : __( 'Documents', 'cascapedia-st-jules' ); $file_id = (int) get_post_meta( $post->ID, 'document_file', true ); $href = $file_id ? wp_get_attachment_url( $file_id ) : ''; if ( ! $href ) {