{"id":62,"date":"2025-06-21T02:08:33","date_gmt":"2025-06-21T02:08:33","guid":{"rendered":"https:\/\/bluedolomites.com\/?p=62"},"modified":"2026-06-03T20:37:35","modified_gmt":"2026-06-03T18:37:35","slug":"pattern-dispatch-multi-wordpress","status":"publish","type":"post","link":"https:\/\/bluedolomites.com\/en\/pattern-dispatch-multi-wordpress\/","title":{"rendered":"DISPATCH : un pattern pour d\u00e9ployer sur plusieurs WordPress sans Git"},"content":{"rendered":"<p class=\"bd-suptitle\">Technique<\/p>\n<h2>Comment je d\u00e9ploie un mu-plugin sur neuf sites en une commande.<\/h2>\n<p>Git c\u00f4t\u00e9 serveur, c&#8217;est lourd. Sur un h\u00e9bergement mutualis\u00e9 sans acc\u00e8s root, c&#8217;est carr\u00e9ment un probl\u00e8me. Voici l&#8217;alternative que j&#8217;utilise depuis 18 mois.<\/p>\n<h3>Le probl\u00e8me<\/h3>\n<p>Je dois modifier un mu-plugin (par exemple ajouter une r\u00e8gle de s\u00e9curit\u00e9 dans <code>security-hardening.php<\/code>) et le d\u00e9ployer sur mes neuf sites WordPress. Solution na\u00efve : modifier sur le premier site via FTP, tester, puis r\u00e9p\u00e9ter neuf fois. C&#8217;est tedious et source d&#8217;erreurs.<\/p>\n<h3>Le pattern DISPATCH<\/h3>\n<p>Un seul script bash en SSH qui :<\/p>\n<ol>\n<li>Lit un fichier source (le mu-plugin modifi\u00e9) depuis <code>~\/upload-pack\/<\/code><\/li>\n<li>It\u00e8re sur une liste de sites (variable bash <code>SITES=(seed patashop sleepwell ...)<\/code>)<\/li>\n<li>Pour chaque site, copie le fichier dans son <code>wp-content\/mu-plugins\/<\/code><\/li>\n<li>V\u00e9rifie que la copie a bien eu lieu (taille, contenu)<\/li>\n<li>Affiche un r\u00e9cap propre<\/li>\n<\/ol>\n<p>Le tout en 30 lignes de bash. Pas de Git, pas de runners CI, pas de pipeline. Juste un script qui fait une chose et la fait bien.<\/p>\n<h3>L&#8217;exemple concret<\/h3>\n<pre><code>#!\/bin\/bash\nSOURCE=~\/upload-pack\/security-hardening.php\nSITES=(seed patashop sleepwell bienetre40 shopbluedolomites tcbluedolomites maneuro yakapa bluedolomites)\n\nfor SITE in \"${SITES[@]}\"; do\n    DEST=\"$HOME\/$SITE\/wp-content\/mu-plugins\/security-hardening.php\"\n    cp \"$SOURCE\" \"$DEST\"\n    chmod 644 \"$DEST\"\n    echo \"\u2713 $SITE : d\u00e9ploy\u00e9\"\ndone\n<\/code><\/pre>\n<h3>Pourquoi c&#8217;est suffisant<\/h3>\n<p>Pour mon cas d&#8217;usage (un seul op\u00e9rateur, neuf sites, mu-plugins qui changent rarement), Git apporterait une complexit\u00e9 disproportionn\u00e9e par rapport au b\u00e9n\u00e9fice. Le co\u00fbt de la complexit\u00e9 Git (branches, merges, rebases, conflits, runners CI) d\u00e9passe largement le b\u00e9n\u00e9fice du versioning fin pour un d\u00e9ploiement qui se r\u00e9sume \u00e0 &#8220;copier ce fichier sur N machines identiques&#8221;.<\/p>\n<p>Le versioning, je le fais via les archives daily (<code>~\/_archives\/2026-06-03\/<\/code>) \u2014 ce qui me donne un historique chronologique des fichiers sans complexit\u00e9 d&#8217;arborescence Git.<\/p>\n<h3>Quand utiliser autre chose<\/h3>\n<p>Si vous \u00eates plusieurs d\u00e9veloppeurs avec des changements concurrents, ou si vos sites ont des configurations vraiment divergentes, Git devient n\u00e9cessaire. Mais pour un solo entrepreneur avec un portfolio uniforme, DISPATCH est radicalement plus simple et largement suffisant.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Technique Comment je d\u00e9ploie un mu-plugin sur neuf sites en une commande. Git c\u00f4t\u00e9 serveur, c&#8217;est lourd. Sur un h\u00e9bergement mutualis\u00e9 sans acc\u00e8s root, c&#8217;est carr\u00e9ment un probl\u00e8me. Voici l&#8217;alternative que j&#8217;utilise depuis 18 mois. Le probl\u00e8me Je dois modifier un mu-plugin (par exemple ajouter une r\u00e8gle de s\u00e9curit\u00e9 dans security-hardening.php) et le d\u00e9ployer sur [&hellip;]<\/p>\n","protected":false},"author":0,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-62","post","type-post","status-publish","format-standard","hentry","category-non-classe"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.7 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>DISPATCH : un pattern pour d\u00e9ployer sur plusieurs WordPress sans Git - BlueDolomites<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/bluedolomites.com\/en\/pattern-dispatch-multi-wordpress\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"DISPATCH : un pattern pour d\u00e9ployer sur plusieurs WordPress sans Git - BlueDolomites\" \/>\n<meta property=\"og:description\" content=\"Technique Comment je d\u00e9ploie un mu-plugin sur neuf sites en une commande. Git c\u00f4t\u00e9 serveur, c&#8217;est lourd. Sur un h\u00e9bergement mutualis\u00e9 sans acc\u00e8s root, c&#8217;est carr\u00e9ment un probl\u00e8me. Voici l&#8217;alternative que j&#8217;utilise depuis 18 mois. Le probl\u00e8me Je dois modifier un mu-plugin (par exemple ajouter une r\u00e8gle de s\u00e9curit\u00e9 dans security-hardening.php) et le d\u00e9ployer sur [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/bluedolomites.com\/en\/pattern-dispatch-multi-wordpress\/\" \/>\n<meta property=\"og:site_name\" content=\"BlueDolomites\" \/>\n<meta property=\"article:published_time\" content=\"2025-06-21T02:08:33+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-06-03T18:37:35+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"2 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/bluedolomites.com\\\/pattern-dispatch-multi-wordpress\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/bluedolomites.com\\\/pattern-dispatch-multi-wordpress\\\/\"},\"author\":{\"name\":\"\",\"@id\":\"\"},\"headline\":\"DISPATCH : un pattern pour d\u00e9ployer sur plusieurs WordPress sans Git\",\"datePublished\":\"2025-06-21T02:08:33+00:00\",\"dateModified\":\"2026-06-03T18:37:35+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/bluedolomites.com\\\/pattern-dispatch-multi-wordpress\\\/\"},\"wordCount\":323,\"publisher\":{\"@id\":\"https:\\\/\\\/bluedolomites.com\\\/#organization\"},\"articleSection\":[\"Non class\u00e9\"],\"inLanguage\":\"en\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/bluedolomites.com\\\/pattern-dispatch-multi-wordpress\\\/\",\"url\":\"https:\\\/\\\/bluedolomites.com\\\/pattern-dispatch-multi-wordpress\\\/\",\"name\":\"DISPATCH : un pattern pour d\u00e9ployer sur plusieurs WordPress sans Git - BlueDolomites\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/bluedolomites.com\\\/#website\"},\"datePublished\":\"2025-06-21T02:08:33+00:00\",\"dateModified\":\"2026-06-03T18:37:35+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/bluedolomites.com\\\/pattern-dispatch-multi-wordpress\\\/#breadcrumb\"},\"inLanguage\":\"en\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/bluedolomites.com\\\/pattern-dispatch-multi-wordpress\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/bluedolomites.com\\\/pattern-dispatch-multi-wordpress\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/bluedolomites.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"DISPATCH : un pattern pour d\u00e9ployer sur plusieurs WordPress sans Git\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/bluedolomites.com\\\/#website\",\"url\":\"https:\\\/\\\/bluedolomites.com\\\/\",\"name\":\"BlueDolomites\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/bluedolomites.com\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/bluedolomites.com\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/bluedolomites.com\\\/#organization\",\"name\":\"BlueDolomites\",\"url\":\"https:\\\/\\\/bluedolomites.com\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en\",\"@id\":\"https:\\\/\\\/bluedolomites.com\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/bluedolomites.com\\\/wp-content\\\/uploads\\\/2026\\\/06\\\/cropped-logo.png\",\"contentUrl\":\"https:\\\/\\\/bluedolomites.com\\\/wp-content\\\/uploads\\\/2026\\\/06\\\/cropped-logo.png\",\"width\":953,\"height\":213,\"caption\":\"BlueDolomites\"},\"image\":{\"@id\":\"https:\\\/\\\/bluedolomites.com\\\/#\\\/schema\\\/logo\\\/image\\\/\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"DISPATCH : un pattern pour d\u00e9ployer sur plusieurs WordPress sans Git - BlueDolomites","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/bluedolomites.com\/en\/pattern-dispatch-multi-wordpress\/","og_locale":"en_US","og_type":"article","og_title":"DISPATCH : un pattern pour d\u00e9ployer sur plusieurs WordPress sans Git - BlueDolomites","og_description":"Technique Comment je d\u00e9ploie un mu-plugin sur neuf sites en une commande. Git c\u00f4t\u00e9 serveur, c&#8217;est lourd. Sur un h\u00e9bergement mutualis\u00e9 sans acc\u00e8s root, c&#8217;est carr\u00e9ment un probl\u00e8me. Voici l&#8217;alternative que j&#8217;utilise depuis 18 mois. Le probl\u00e8me Je dois modifier un mu-plugin (par exemple ajouter une r\u00e8gle de s\u00e9curit\u00e9 dans security-hardening.php) et le d\u00e9ployer sur [&hellip;]","og_url":"https:\/\/bluedolomites.com\/en\/pattern-dispatch-multi-wordpress\/","og_site_name":"BlueDolomites","article_published_time":"2025-06-21T02:08:33+00:00","article_modified_time":"2026-06-03T18:37:35+00:00","twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/bluedolomites.com\/pattern-dispatch-multi-wordpress\/#article","isPartOf":{"@id":"https:\/\/bluedolomites.com\/pattern-dispatch-multi-wordpress\/"},"author":{"name":"","@id":""},"headline":"DISPATCH : un pattern pour d\u00e9ployer sur plusieurs WordPress sans Git","datePublished":"2025-06-21T02:08:33+00:00","dateModified":"2026-06-03T18:37:35+00:00","mainEntityOfPage":{"@id":"https:\/\/bluedolomites.com\/pattern-dispatch-multi-wordpress\/"},"wordCount":323,"publisher":{"@id":"https:\/\/bluedolomites.com\/#organization"},"articleSection":["Non class\u00e9"],"inLanguage":"en"},{"@type":"WebPage","@id":"https:\/\/bluedolomites.com\/pattern-dispatch-multi-wordpress\/","url":"https:\/\/bluedolomites.com\/pattern-dispatch-multi-wordpress\/","name":"DISPATCH : un pattern pour d\u00e9ployer sur plusieurs WordPress sans Git - BlueDolomites","isPartOf":{"@id":"https:\/\/bluedolomites.com\/#website"},"datePublished":"2025-06-21T02:08:33+00:00","dateModified":"2026-06-03T18:37:35+00:00","breadcrumb":{"@id":"https:\/\/bluedolomites.com\/pattern-dispatch-multi-wordpress\/#breadcrumb"},"inLanguage":"en","potentialAction":[{"@type":"ReadAction","target":["https:\/\/bluedolomites.com\/pattern-dispatch-multi-wordpress\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/bluedolomites.com\/pattern-dispatch-multi-wordpress\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/bluedolomites.com\/"},{"@type":"ListItem","position":2,"name":"DISPATCH : un pattern pour d\u00e9ployer sur plusieurs WordPress sans Git"}]},{"@type":"WebSite","@id":"https:\/\/bluedolomites.com\/#website","url":"https:\/\/bluedolomites.com\/","name":"BlueDolomites","description":"","publisher":{"@id":"https:\/\/bluedolomites.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/bluedolomites.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en"},{"@type":"Organization","@id":"https:\/\/bluedolomites.com\/#organization","name":"BlueDolomites","url":"https:\/\/bluedolomites.com\/","logo":{"@type":"ImageObject","inLanguage":"en","@id":"https:\/\/bluedolomites.com\/#\/schema\/logo\/image\/","url":"https:\/\/bluedolomites.com\/wp-content\/uploads\/2026\/06\/cropped-logo.png","contentUrl":"https:\/\/bluedolomites.com\/wp-content\/uploads\/2026\/06\/cropped-logo.png","width":953,"height":213,"caption":"BlueDolomites"},"image":{"@id":"https:\/\/bluedolomites.com\/#\/schema\/logo\/image\/"}}]}},"_links":{"self":[{"href":"https:\/\/bluedolomites.com\/en\/wp-json\/wp\/v2\/posts\/62","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/bluedolomites.com\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/bluedolomites.com\/en\/wp-json\/wp\/v2\/types\/post"}],"replies":[{"embeddable":true,"href":"https:\/\/bluedolomites.com\/en\/wp-json\/wp\/v2\/comments?post=62"}],"version-history":[{"count":1,"href":"https:\/\/bluedolomites.com\/en\/wp-json\/wp\/v2\/posts\/62\/revisions"}],"predecessor-version":[{"id":83,"href":"https:\/\/bluedolomites.com\/en\/wp-json\/wp\/v2\/posts\/62\/revisions\/83"}],"wp:attachment":[{"href":"https:\/\/bluedolomites.com\/en\/wp-json\/wp\/v2\/media?parent=62"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/bluedolomites.com\/en\/wp-json\/wp\/v2\/categories?post=62"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/bluedolomites.com\/en\/wp-json\/wp\/v2\/tags?post=62"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}