From aa76a5a2a830ddc05057a1c0bbaf78b7fb22c2c7 Mon Sep 17 00:00:00 2001 From: Max Cohen Date: Wed, 14 May 2025 17:01:37 +0200 Subject: [PATCH 1/2] Add latest posts block widget --- wp-dsfr-blocks/src/fr-latest-posts/block.json | 12 +++++++++ wp-dsfr-blocks/src/fr-latest-posts/index.js | 22 +++++++++++++++ wp-dsfr-blocks/src/fr-latest-posts/render.php | 27 +++++++++++++++++++ wp-dsfr-blocks/wp-dsfr-blocks.php | 1 + wp-dsfr-theme/inc/Services/Editor.php | 1 + 5 files changed, 63 insertions(+) create mode 100644 wp-dsfr-blocks/src/fr-latest-posts/block.json create mode 100644 wp-dsfr-blocks/src/fr-latest-posts/index.js create mode 100644 wp-dsfr-blocks/src/fr-latest-posts/render.php diff --git a/wp-dsfr-blocks/src/fr-latest-posts/block.json b/wp-dsfr-blocks/src/fr-latest-posts/block.json new file mode 100644 index 0000000..fb15885 --- /dev/null +++ b/wp-dsfr-blocks/src/fr-latest-posts/block.json @@ -0,0 +1,12 @@ +{ + "$schema": "https://schemas.wp.org/trunk/block.json", + "apiVersion": 2, + "name": "dsfr/fr-latest-posts", + "version": "1.0.0", + "title": "Derniers articles", + "category": "widgets", + "description": "Bloc DSFR derniers articles.", + "textdomain": "wp-dsfr-blocks", + "editorScript": "file:./index.js", + "render": "file:./render.php" +} diff --git a/wp-dsfr-blocks/src/fr-latest-posts/index.js b/wp-dsfr-blocks/src/fr-latest-posts/index.js new file mode 100644 index 0000000..2f73a37 --- /dev/null +++ b/wp-dsfr-blocks/src/fr-latest-posts/index.js @@ -0,0 +1,22 @@ +import { registerBlockType } from '@wordpress/blocks'; +import metadata from './block.json'; + +registerBlockType( metadata.name, { + title: __( 'Dernières actualités', 'dsfr' ), + category: 'dsfr', + icon: 'megaphone', + edit: () => { + return ( +

+ { __( + 'Bloc affichant les 3 derniers articles de la catégorie actualités.', + 'dsfr' + ) } +

+ ); + }, + save: () => { + // Rendered via PHP + return null; + }, +} ); diff --git a/wp-dsfr-blocks/src/fr-latest-posts/render.php b/wp-dsfr-blocks/src/fr-latest-posts/render.php new file mode 100644 index 0000000..4de980a --- /dev/null +++ b/wp-dsfr-blocks/src/fr-latest-posts/render.php @@ -0,0 +1,27 @@ + 'actualites', + 'posts_per_page' => 4, + 'post_status' => 'publish', + ] +); + +if ( ! $posts_query->have_posts() ) { + return; +} +?> +
+
+
+ have_posts() ) : + $posts_query->the_post(); + get_template_part( 'components/loops/card-post', 0 !== $i++ ? '' : 'highlight', [ 'heading_level' => 2 ] ); + endwhile; + wp_reset_postdata(); + ?> +
+
+
diff --git a/wp-dsfr-blocks/wp-dsfr-blocks.php b/wp-dsfr-blocks/wp-dsfr-blocks.php index d85bb75..1505657 100644 --- a/wp-dsfr-blocks/wp-dsfr-blocks.php +++ b/wp-dsfr-blocks/wp-dsfr-blocks.php @@ -27,6 +27,7 @@ function dsfr_native_blocks_init() { 'fr-accordion', 'fr-accordion-title', 'fr-collapse', + 'fr-latest-posts', 'fr-quote', 'fr-tabs', 'fr-tabs-list', diff --git a/wp-dsfr-theme/inc/Services/Editor.php b/wp-dsfr-theme/inc/Services/Editor.php index c0f74b0..6c0edb4 100644 --- a/wp-dsfr-theme/inc/Services/Editor.php +++ b/wp-dsfr-theme/inc/Services/Editor.php @@ -338,6 +338,7 @@ public function gutenberg_blocks_allowed( $allowed_blocks, \WP_Block_Editor_Cont 'dsfr/fr-accordion', 'dsfr/fr-collapse', 'dsfr/fr-accordion-title', + 'dsfr/fr-latest-posts', 'dsfr/fr-quote', 'dsfr/fr-tabs', 'dsfr/fr-tabs-list', From a9ad7279bc0a9133e65d5a1f030e0b9fdd3623a6 Mon Sep 17 00:00:00 2001 From: Max Cohen Date: Tue, 27 May 2025 10:34:28 +0200 Subject: [PATCH 2/2] Fix missing import --- wp-dsfr-blocks/src/fr-latest-posts/index.js | 1 + 1 file changed, 1 insertion(+) diff --git a/wp-dsfr-blocks/src/fr-latest-posts/index.js b/wp-dsfr-blocks/src/fr-latest-posts/index.js index 2f73a37..92fe29e 100644 --- a/wp-dsfr-blocks/src/fr-latest-posts/index.js +++ b/wp-dsfr-blocks/src/fr-latest-posts/index.js @@ -1,4 +1,5 @@ import { registerBlockType } from '@wordpress/blocks'; +import { __ } from '@wordpress/i18n'; import metadata from './block.json'; registerBlockType( metadata.name, {