Install
This is the repository archive. It installs, but the folder name will carry the branch suffix and updates will not flow.
Install straight from GitHub with WP-CLI:
wp plugin install https://github.com/mahiiro/mahii-blocks/archive/refs/heads/main.zipNo built-in updater. New versions won't appear under Dashboard → Updates. Install new releases yourself, or let Git Updater track the repository.
Plugin WordPress de blocs Gutenberg, scaffoldé avec @wordpress/create-block.
Prérequis
- Node.js 20.10.0 ou supérieur
- npm
- Docker (pour
@wordpress/env) - WordPress 6.8+ / PHP 7.4+ (cible de développement : PHP 8.5)
Démarrage rapide
npm install
npm start
Environnement WordPress local :
npm run env start
Site en général : http://localhost:8888 (admin / password).
Blocs
| Bloc | Nom technique | Description |
|---|---|---|
| Navigation Mahii | mahii/navigation |
Menu responsive mobile-first, overlay type core, burger configurable |
| Élément de navigation | mahii/nav-item |
Page / URL / libellé + sous-menus récursifs + icône |
| Carousel de logos | mahii/logo-carousel |
Défilement CSS pur, fondu latéral, pause au survol |
| FAQ | mahii/faq |
Section FAQ SEO-friendly, items ouverts par défaut |
| Question FAQ | mahii/faq-item |
Question / réponse (<details open>) |
FAQ
- Markup
<section>+<details open>: contenu toujours dans le HTML (crawlable, utile aux LLM) - Pas de JSON-LD FAQPage : Google a retiré les rich results FAQ (mai 2026) ; le schema ne produit plus de résultat enrichi. Le contenu visible reste le signal utile.
- Ouvert par défaut ; +/− à droite en CSS pur (traits 15×1 px), zone cliquable ~44×44 px
- Aucun JS front (API native
details/summary, clavier + lecteurs d’écran) - Couleur et taille de police des questions via les contrôles Gutenberg du bloc FAQ
Carousel de logos
- Animation 100 % CSS (
transform: translate3d, boucle fluide via piste dupliquée) - Aucun
viewScript/ pas de JS front - Fondu blanc → transparent sur les bords (couleur réglable)
- Pause au survol / focus-within
- Respect de
prefers-reduced-motion(bandeau statique) - Images en
loading="lazy"+decoding="async", taille médiamedium
Navigation Mahii
- Breakpoint réglable (défaut 1024px) : burger + overlay en dessous
- Burger : mode CSS (2 ou 3 traits, épaisseur, coins, taille) ou deux images SVG (ouvert / fermé)
- Sous-menus : bouton d’ouverture, icône SVG configurable, popover desktop / accordéon mobile
- Items :
- lien page (ID → permalien dynamique)
- lien URL
http(s): - libellé sans lien (parent de sous-menu)
- option Style bouton → classes
is-style-button/wp-block-mahii-nav-item--button(à styler en CSS) - page courante :
is-current+aria-current="page"; parent d’un courant :has-current - niveau :
is-level-1,is-level-2, … sur le<li>et le lien / bouton
- Icône d’item : MediaUpload dans l’inspecteur
Structure
mahii-blocks/
├── mahii-blocks.php
├── src/
│ ├── navigation/
│ ├── nav-item/
│ ├── logo-carousel/
│ ├── faq/
│ └── faq-item/
├── build/ # généré
├── .cursor/rules/ # bonnes pratiques Cursor
└── README.md
Scripts npm
| Commande | Description |
|---|---|
npm start |
Build développement (watch) |
npm run build |
Build production |
npm run format |
Formatage |
npm run lint:js / lint:css |
Linting |
npm run plugin-zip |
Archive du plugin |
npm run env start |
WordPress via Docker |
Bonnes pratiques
Règles Cursor dans .cursor/rules/ : PHP 8.5, plugin WordPress, accessibilité, éco-conception.
Licence
GPL-2.0-or-later