Documentation MevvCode

Exécuter du petit code avec une vraie frontière de sécurité.

MevvCode gère des snippets PHP, JavaScript, CSS, HTML et texte sans interroger un enregistrement de base de données modifiable à chaque requête. Ce guide couvre l’installation, le modèle d’exécution, la migration depuis Code Snippets, le mode sans échec, la portabilité et la frontière exacte entre Free et Pro.

À quoi sert MevvCode

MevvCode est un foyer pour les petits morceaux de comportement propres à un site : une règle de livraison WooCommerce, un champ de commande, une balise de vérification, un court outil d’administration, une correction CSS visuelle ou du HTML et du texte réutilisables. Il donne au code un responsable, un emplacement, des conditions, un historique et une voie protégée vers la production.

À utiliser quand
La modification est plus petite qu’une extension complète, mais assez importante pour ne pas disparaître dans un fichier de thème.
À ne pas utiliser quand
Le besoin est un produit métier complet, avec son propre modèle de données, ses écrans et son cycle de publication ; construisez alors une extension classique.
Responsabilité du code
Écrivez le code vous-même ou apportez du code relu par un développeur ou une source de confiance. MevvCode gère et protège le code ; il ne rend pas fiable un snippet inconnu.

Commencez chaque snippet emprunté à l’état inactif. Lisez-le, retirez les secrets et les identifiants propres au site, puis validez-le avant de l’activer.

Installation

Installez et activez d’abord l’extension gratuite MevvCode. Elle exige WordPress 6.6 ou plus récent et PHP 8.1 ou plus récent. Pro est une extension compagnon distincte et ne remplace jamais le runtime gratuit.

  1. Téléversez mevvcode-1.1.0.zip et activez-le.
  2. Ouvrez MevvCode → Snippets. Le répertoire de stockage et ses fichiers de protection pour le serveur web sont créés automatiquement.
  3. Créez un snippet inactif, choisissez son type et son emplacement, puis enregistrez-le.
  4. Servez-vous de l’aperçu et du résultat de syntaxe avant de l’activer.
  5. N’installez mevvcode-pro-1.1.0.zip que si vous avez besoin des écrans Pro, puis activez votre licence MEVD sous MevvCode → Licence.

Laissez l’extension gratuite active lorsque Pro est installé. Le runtime exécutable appartient à Free, de sorte qu’une licence expirée ne fait jamais disparaître un comportement déjà publié.

Votre premier snippet

Créez le premier enregistrement à l’état inactif. Donnez-lui un nom qui dit son objectif, et ne choisissez PHP et l’emplacement global que si le code lui-même s’accroche à un hook WordPress ou WooCommerce bien délimité ; enregistrez ensuite.

add_filter( 'woocommerce_package_rates', function ( $rates ) {
    if ( ! WC()->cart || WC()->cart->get_subtotal() < 1000 ) {
        return $rates;
    }
    return array_filter( $rates, function ( $rate ) {
        return 'free_shipping' === $rate->method_id;
    } );
} );
  1. Lisez le résultat de la validation ; une erreur d’analyse doit laisser l’enregistrement inactif.
  2. Vérifiez que votre boutique dispose déjà d’un mode de livraison gratuite configuré.
  3. Activez le snippet en préproduction et testez des paniers en dessous et au-dessus du seuil.
  4. Exportez une copie JSON avant de porter l’enregistrement en production.
  5. Publiez, puis vérifiez le panier public et le point de terminaison de santé de MevvCode.

L’exemple illustre la méthode de travail, pas une politique de livraison universelle. Les taxes, les codes promo, les devises et les zones de livraison peuvent changer le sous-total que votre règle métier devrait utiliser.

Tableau de bord turc et ligne de l’extension

Free et Pro 1.1.0 livrent des catalogues PO modifiables, MO compilés et POT. Lorsque la langue du site WordPress est Türkçe (tr_TR), le tableau de bord, les états de migration, les erreurs de validation et l’écran de licence se chargent automatiquement en turc.

  • L’écran des extensions affiche la description traduite.
  • Réglages ouvre directement l’onglet des réglages de MevvCode.
  • Documentation ouvre cette page et Assistance ouvre la page de contact.
  • La gestion des dépendances de WordPress empêche de supprimer Free tant que MevvCode Pro en a besoin.

Si le tableau de bord turc ne se charge pas, vérifiez Réglages → Général → Langue du site, puis mettez Free et Pro à la même version. Ne renommez pas de fichiers dans le répertoire des langues.

Le modèle d’exécution

Les enregistrements modifiables se trouvent sous wp-content/mevvcode-snippets/records. L’enregistrement d’une modification active construit une nouvelle génération dans un répertoire temporaire, valide chaque fichier PHP, écrit un manifeste et ne bascule le pointeur courant qu’ensuite.

Enregistrements
La source modifiable, les métadonnées, les conditions et l’historique.
Génération
Fichiers compilés immuables correspondant à un état connu comme fonctionnel.
Manifeste
La petite carte que lit le chemin de la requête pour trouver la génération courante.

Une compilation en échec ne met pas le site à jour partiellement. L’ancien manifeste reste courant, la source en échec reste modifiable et le tableau de bord affiche l’erreur. Il n’y a aucune requête de code de snippet par requête.

Ne modifiez pas les fichiers générés à la main. Ce sont des sorties de compilation jetables, remplacées à la prochaine compilation réussie.

Types, emplacements et conditions

PHP s’exécute via les hooks WordPress. JavaScript, CSS, HTML et texte ne sont imprimés qu’à l’emplacement explicite que vous choisissez : head, body-open, pied de page, avant ou après le contenu, code court, manuel ou une seule fois.

  • Le ET s’applique à l’intérieur d’un groupe de conditions ; les groupes sont reliés par OU.
  • Les contextes administration, site public, URL, utilisateur, rôle et requête peuvent être combinés.
  • Les étiquettes et les groupes organisent les enregistrements ; un verrou empêche les modifications et les actions groupées accidentelles.
  • Un snippet manuel ne rejoint aucun hook de requête tant que votre propre code ne l’appelle pas.

Utilisez l’emplacement et la condition les plus étroits qui décrivent le besoin. Un hook PHP global doit être un choix délibéré, pas le foyer par défaut d’un code copié depuis un ticket d’assistance.

La bibliothèque et les packs

L’onglet Bibliothèque contient soixante extraits relus pour les tâches ordinaires que les gens collent sinon depuis un message de forum : désactiver XML-RPC, retirer les fichiers d’emoji, ajouter un lien d’évitement, marquer les liens externes noopener, des ajustements WooCommerce. En ajouter un le copie dans votre propre espace de travail comme fiche inactive — vous le lisez, puis vous l’activez. Rien ne s’installe en marche.

Six packs les regroupent par tâche plutôt que par catégorie : lancement de boutique, nettoyage de la page de paiement, réglage du catalogue, performance de la boutique, bases du durcissement et rangement de l’administration. Un pack, c’est tout ou rien — si l’un de ses extraits ne peut pas être écrit, ceux déjà écrits sont annulés, donc vous ne vous retrouvez jamais avec un demi-pack sans moyen de dire quelle moitié.

Les fiches de la bibliothèque sont des copies. En modifier une dans votre espace de travail ne change jamais la bibliothèque, et une mise à jour ultérieure de l’extension ne modifie jamais ce que vous avez déjà personnalisé.

Migrer depuis Code Snippets

Ouvrez MevvCode → Migration. L’importateur lit la table des snippets portant le préfixe du site, conserve chaque identifiant source et les octets de code exacts, et crée des enregistrements MevvCode mis en attente sans changer l’extension active.

  1. Lancez la détection et examinez le nombre d’enregistrements.
  2. Importez dans l’ensemble mis en attente, à l’état inactif.
  3. Analysez chaque snippet actif dans Code Snippets.
  4. Créez un instantané de retour arrière de la liste des extensions actives et du manifeste MevvCode courant.
  5. Compilez une génération complète.
  6. Lancez la bascule. Code Snippets n’est désactivé qu’une fois le manifeste existant.
  7. Une requête signée en boucle locale contrôle le site public. En cas de succès, la bascule est validée ; en cas d’échec, la liste des extensions et le manifeste sont restaurés automatiquement.

Les tables sources ne sont pas supprimées. Le retour arrière manuel reste disponible après une bascule réussie et réactive exactement l’ancienne liste des extensions actives. Sur mevvshop.com, le 1er septembre 2026, la bascule de production mesurée a préservé 9 enregistrements et 6 états actifs, et produit 0 écart sur le nom, les octets de code exacts, la priorité et le statut. C’est une preuve pour cette boutique, pas une référence universelle.

Si un snippet importé échoue à l’analyse, corrigez la copie MevvCode mise en attente ou laissez-la inactive. Ne désactivez pas Code Snippets à la main avant que la bascule ne signale une génération saine.

Mode sans échec et récupération

Le mode sans échec peut être activé avec la constante documentée ou par une URL signée de courte durée générée pour un administrateur. En mode sans échec, l’exécution des snippets s’arrête tandis que le tableau de bord reste accessible pour réparer.

  • Une erreur d’analyse PHP ne devient jamais la génération courante.
  • Une exception d’exécution désactive l’enregistrement responsable et laisse les autres snippets disponibles.
  • Le garde-fou contre les erreurs fatales n’enregistre que l’identité et l’état de l’enregistrement nécessaires à la récupération — jamais le code source ni les secrets de la requête.
  • La génération précédente, connue comme fonctionnelle, est conservée jusqu’à ce que la remplaçante passe tous les contrôles.
define( 'MEVVCODE_SAFE_MODE', true );

Retirez la constante une fois l’enregistrement défectueux corrigé ou désactivé. La laisser en place volontairement maintient tous les snippets éteints.

Portabilité et sauvegardes

Exportez les enregistrements choisis en MevvCode JSON v1 pour un aller-retour sans perte, ou en PHP lisible lorsque la destination ne doit pas dépendre de MevvCode. Les imports Code Snippets et WPCode sont des adaptateurs vers ce même format d’enregistrement canonique.

  • Un export JSON comprend les métadonnées, les conditions et le statut.
  • Un export PHP est destiné à la relecture et à une reprise en main manuelle, pas à réimporter des métadonnées cachées.
  • Le chargeur must-use peut porter le comportement compilé lorsque l’extension normale doit être supprimée.
  • Pro peut empaqueter les snippets choisis en une extension de fonctionnalités ZIP classique après avoir validé les noms, les chemins et le PHP.

Conservez une copie des exports hors du site avant un import important, une activation groupée ou une migration. Les révisions sont un historique de modification, pas une sauvegarde de secours.

Free et Pro

Free est le gestionnaire de snippets local complet et sûr. Il comprend les cinq types, le runtime atomique, les emplacements et les conditions de base, le garde-fou contre les erreurs fatales, le mode sans échec, la migration depuis Code Snippets, l’import/export, les générateurs, les révisions, les permissions par rôle, la REST en lecture seule et le chargeur must-use.

Pro est la couche de collaboration et de livraison. Elle ajoute des conditions réutilisables et planifiées ; le contexte appareil, référent, géo, panier et commande ; un historique d’audit illimité ; des builds CSS/JS et des ressources externes ; des événements de pixel e-commerce avec un moniteur en direct ; l’automatisation signée ; l’export de plugin ; des analyses agrégées locales ; des espaces de travail cloud chiffrés ; la revue par IA optionnelle et la rédaction par IA avec votre propre clé de fournisseur ; et une API compatible REST/MCP à actions restreintes.

Le cloud et l’IA sont deux activations distinctes. L’IA reçoit la copie masquée et renvoie un diff de revue ; elle ne l’applique jamais automatiquement. Les écritures cloud utilisent un HMAC signé avec la clé de licence, et les révisions optimistes rejettent les mises à jour périmées.

Rédiger un extrait avec l’IA

Pro peut rédiger un extrait à partir d’une description de ce dont vous avez besoin. C’est strictement « apportez votre propre compte » : vous choisissez le fournisseur — OpenAI ou Anthropic — et collez votre propre clé d’API, et la requête part de votre site directement vers ce fournisseur. La génération ne passe pas du tout par nos serveurs. L’IA est désactivée tant que vous ne l’activez pas.

  • Ce qui revient est toujours enregistré comme brouillon inactif. Le code généré n’est jamais appliqué, activé ni exécuté de lui-même.
  • Une proposition qui ne franchit pas le même contrôle de syntaxe PHP que le compilateur gratuit applique avant activation n’est pas enregistrée du tout : un extrait qui provoquerait une erreur fatale n’atteint donc jamais votre liste.
  • Les cinq types d’extraits peuvent être rédigés : PHP, JavaScript, CSS, HTML et texte.

La revue par IA et la rédaction par IA sont deux fonctions distinctes qui empruntent des chemins distincts. La revue envoie une copie caviardée du code que vous avez déjà à notre propre point de terminaison avec votre clé de licence et renvoie un diff ; la rédaction ne parle qu’au fournisseur que vous avez choisi, avec votre propre clé. Les deux s’activent séparément, et aucune n’applique quoi que ce soit d’elle-même.

Condition de pays et SCSS (Pro)

Exécuter un extrait seulement dans certains pays

Pro ajoute une condition de pays au même éditeur de règles que celui de l’édition gratuite. Le pays est résolu depuis l’adresse de facturation ou de livraison du client WooCommerce lui-même et, à défaut, depuis une base de données de géolocalisation installée sur votre serveur. Il n’est jamais demandé à un service de recherche tiers, et aucune adresse de visiteur n’est conservée — la question trouve sa réponse en local ou elle n’en trouve pas du tout.

Écrire du SCSS

L’écran Styles compile du SCSS ou du LESS et classe le résultat comme un nouvel extrait CSS, inactif, pour que vous le lisiez avant de l’activer. C’est un détour délibéré et non un crochet sur l’éditeur CSS : ce qui tourne sur votre site reste du CSS simple que vous pouvez ouvrir.

Le compilateur est écrit pour ce seul travail — variables, imbrication, l’esperluette, et règles media, supports, layer et container remontées vers l’extérieur. Ce qu’il n’implémente pas, il le refuse avec une erreur : mixin, extend, import, directives de contrôle et interpolation. Refuser est tout l’intérêt. Un compilateur qui prend en charge à moitié une directive produit un CSS subtilement différent de ce que vous avez écrit, et vous l’apprenez côté public.

Événements de pixel en direct

Pro normalise les événements e-commerce pour Meta, Google et TikTok — vue d’article, ajout au panier, début de paiement et achat — et peut les montrer arriver pendant que vous travaillez, afin que vous constatiez qu’un événement se déclenche bien et porte les valeurs attendues. La capture est désactivée par défaut et doit être activée délibérément.

  • Les événements restent sur votre propre site. Aucun collecteur tiers ne figure sur ce chemin.
  • Seuls les deux cents derniers événements sont conservés, dans un tampon glissant. Rien de plus ancien ne subsiste et aucune table ne grossit.
  • Aucune adresse IP, aucun cookie, aucun identifiant et aucune chaîne de requête n’est stockée. Lorsqu’une adresse e-mail ou un numéro de téléphone appartient à l’événement, il est d’abord haché en SHA-256.

Il s’agit d’un moniteur pour vérifier vos événements, pas d’un outil d’analyse. Il ne conserve aucun historique à partir duquel bâtir un rapport, et ce n’est pas son objet.

Trouver et activer une licence Pro

Une licence achetée est associée à l’e-mail de la commande et apparaît sur mevvsoft.com/account. La clé commence par MEVD ; ne la collez jamais dans un ticket d’assistance, une URL ou un journal public.

  1. Installez et activez le paquet MevvCode gratuit.
  2. Installez et activez le paquet MevvCode Pro correspondant.
  3. Connectez-vous au compte créé pour l’e-mail de la commande et copiez la clé MevvCode Pro.
  4. Ouvrez MevvCode → Licence, collez la clé MEVD et activez-la.
  5. Vérifiez que le statut est actif et que le site apparaît en face de la licence dans votre compte.

Si la licence est absente du compte, vérifiez d’abord que vous vous êtes connecté avec l’adresse e-mail utilisée lors de la commande. Si elle est présente mais que l’activation signale une limite de sites, libérez un ancien site depuis le compte ou contactez l’assistance sans envoyer la clé complète.

Mises à jour

Les mises à jour passent par WordPress lui-même. L’extension demande à notre boutique s’il existe une version plus récente et remet la réponse au flux de mise à jour propre à WordPress : une nouvelle version apparaît donc sur l’écran des extensions avec un bouton Mettre à jour ordinaire, au lieu d’attendre que quelqu’un télécharge un zip à la main. Dans l’édition gratuite, cette requête ne porte que le nom du paquet et la version installée — aucune adresse de site, aucune adresse e-mail, aucune clé de licence et aucun inventaire d’extensions. Comme rien n’y permet de vous identifier, la confiance repose sur la signature : la réponse est signée avec notre clé Ed25519, et une réponse non signée, mal signée, rejouée depuis un horodatage ancien ou pointant le téléchargement vers un autre hôte que le nôtre est écartée sans toucher au site.

FAQ et dépannage

Un snippet a été enregistré mais ne s’est pas exécuté
Vérifiez qu’il est actif, que son emplacement correspond à la requête, que chaque groupe de conditions peut être satisfait et que le mode sans échec est désactivé.
L’ancienne extension est toujours active après la migration
La bascule n’a pas été validée. Lisez le résultat de la migration ; un contrôle d’analyse, de compilation ou de santé en boucle locale a échoué et le retour arrière a protégé le site.
Le site est passé en mode sans échec
Ouvrez le tableau de bord par l’URL de récupération signée, examinez l’enregistrement désactivé le plus récemment, corrigez-le ou laissez-le désactivé, compilez, puis quittez le mode sans échec.
Le cloud signale un conflit
Un autre client a modifié l’espace de travail après la révision que vous aviez chargée. Comparez l’enregistrement distant à votre enregistrement local et renvoyez-le en vous appuyant sur la nouvelle révision de base.
La revue par IA est indisponible
La licence Pro et l’activation explicite de l’IA doivent toutes deux être actives, et l’adaptateur de service doit être configuré. Les snippets locaux continuent de fonctionner.

Lorsque vous sollicitez l’assistance, envoyez les versions des extensions, les versions de WordPress et de PHP, l’UUID de l’enregistrement et le texte exact de l’erreur. Retirez les secrets et les données clients. N’envoyez pas de clé de licence de production ni le code source complet, sauf si c’est nécessaire et que vous l’avez relu.