Maison interface Web tutoriel CSS Utilisation de Markdown et de la localisation dans l'éditeur de blocs WordPress

Utilisation de Markdown et de la localisation dans l'éditeur de blocs WordPress

Apr 02, 2025 am 04:27 AM

Utilisation de Markdown et de la localisation dans l'éditeur de blocs WordPress

Besoin d'afficher la documentation directement dans l'éditeur WordPress? Cet article explore l'approche optimale, tirant parti de la marque pour la gestion et la localisation des documents rationalisés.

Bien que les composants React et le HTML puissent sembler intuitifs, ils peuvent rapidement devenir lourds et difficiles à maintenir pour une documentation approfondie. Considérez cet exemple à partir d'un article précédent montrant la documentation dans un modal:

 const CacheControlDescription = () => {
  retour (
    <p>L'en-tête de contrôle de cache contiendra la valeur minimale d'âge maximum de tous les champs / directives impliqués dans la demande, ou <code>no-store if the max-age is 0</code>
  )
}</p>
Copier après la connexion

Markdown offre une solution plus propre. Ce qui précède pourrait être refactorisé dans un fichier Markdown ( /docs/cache-control.md ):

 L'en-tête de contrôle de cache contiendra la valeur minimale de l'âge maximum de tous les champs / directives impliqués dans la demande, ou «non-magasin» si l'âge maximum est 0
Copier après la connexion

Markdown vs HTML: avantages et inconvénients

Markdown simplifie le processus, mais manque de prise en charge de localisation intégrée, contrairement aux composants React qui permettent une traduction facile à l'aide de fichiers POT. Étant donné que la localisation est cruciale, nous aborderons cette limitation. Cet article vise à atteindre deux objectifs clés:

  1. Utilisation de Markdown pour la documentation dans un bloc d'éditeur WordPress.
  2. Implémentation de la traduction de la documentation basée sur la langue de l'utilisateur.

Chargement du contenu Markdown

Avec /docs/cache-control.md créé, nous pouvons importer et rendre son contenu converti HTML:

 Importer cacheControldocumentation de '../docs/cache-control.md';

const CacheControlDescription = () => {
  retour (
    <div dangerouslysetinnerhtml="{{" __html: cachecontroldocumentation></div>
  ));
}
Copier après la connexion

Cela repose sur WebPack, le module de base de l'éditeur WordPress (version 4.42). Nous personnaliserons la configuration de WebPack pour gérer les chargeurs Markdown et HTML.

Créez webpack.config.js à la racine du bloc:

 const defaultConfig = require ('@ wordpress / scripts / config / webpack.config');

module.exports = {
  ... defaultConfig,
  module: {
    ... defaultconfig.module,
    règles: [
      ... defaultconfig.module.rules,
      {
        tester: /\.md$/,
        utiliser: [
          {Loader: "html-chargedeur"},
          {Loader: "Markdown-chargedeur"}
        ]]
      }
    ],
  },
};
Copier après la connexion

Installez les packages nécessaires:

 Installation de NPM - Save-DEV Markdown-chargedeur HTML-chargeur
Copier après la connexion

Pour une organisation améliorée, ajoutez un alias WebPack ( @docs pointant vers /docs ):

 const path = require ('path');
config.resolve.alias ['@ docs'] = path.resolve (process.cwd (), 'docs /');
Copier après la connexion

Importe maintenant Simplify à:

 Importer cacheConTroldocumentation à partir de '@ docs / cache-control.md';
Copier après la connexion

Localisation de la documentation

Étant donné que la traduction directe de Markdown n'est pas possible, nous créons des fichiers de marque spécifiques à la langue:

  • /docs/en/cache-control.md
  • /docs/fr/cache-control.md
  • /docs/zh/cache-control.md etc.

Cette approche peut également gérer les variations spécifiques à la région (par exemple, /docs/en_US/cache-control.md ).

Récupération du langage utilisateur

Le langage de l'utilisateur est obtenu à l'aide de get_locale() et analysé pour extraire le code de la langue:

 fonction get_locale_language (): string {
  $ localparts = explosage ('_', get_locale ());
  Retour $ localparts [0];
}
Copier après la connexion

Ce code linguistique est transmis au bloc via wp_localize_script() :

 wp_localize_script (
  $ BlockScriptregrationname,
  «GraphQlapicacheControl»,
  [
    'userlang' => get_locale_language (),
  ]]
));
Copier après la connexion

Maintenant accessible dans le bloc comme window.graphqlApiCacheControl.userLang .

Importations dynamiques

Étant donné que la langue de l'utilisateur n'est connu qu'à l'exécution, nous utilisons les importations dynamiques:

 const Lang = Window.GraphQlapicacheControl.Userlang;
import (`@docs / $ {lang} / cache-control.md`) .then (module => {
  // ...
});
Copier après la connexion

Le contenu est accessible via obj.default :

 const CacheControlContent = import (`@docs / $ {lang} / cache-control.md`) .then (obj => obj.default);
Copier après la connexion

Ceci est encapsulé dans une fonction getMarkdownContent :

 const getMarkdownContent = (nom de fichier, lang) => {
  return import (/ * webpackchunkname: "docs / [request]" * / `@docs / $ {Lang} / $ {nom de fichier} .md`)
    .Then (obj => obj.default);
};
Copier après la connexion

Le /* webpackChunkName: "docs/[request]" */ Comment assure la gestion des morceaux organisés.

Définir le chemin public

Le publicPath est crucial pour WebPack pour localiser les morceaux chargés dynamiquement. Cela peut être codé en dur, défini via une variable d'environnement ou passé au moment de l'exécution. Pour cet exemple, nous allons le passer:

 $ blockPublicPath = plugin_dir_url (__ file__). '/ blocks / cache-control / build /';
wp_localize_script (
  $ BlockScriptregrationname,
  «GraphQlapicacheControl»,
  [
    // ...
    'publicPath' => $ blockPublicPath,
  ]]
));
Copier après la connexion

Puis réglez-le du côté javascript:

 __webpack_public_path__ = window.graphqlapicacheControl.publicPath;
Copier après la connexion

Remplacement de la langue par défaut

Un mécanisme de secours gère les traductions manquantes:

 const getmarkdowncontentorusefault = (filename, defaultlang, lang) => {
  return getMarkdownContent (FileName, Lang)
    .Catch (err => getmarkdownContent (nom de fichier, defaultlang));
};
Copier après la connexion

Intégrer avec le modal

Enfin, le contenu Markdown est intégré dans le modal:

 import {useState, useEffecte} de '@ wordpress / élément';
// ... Autres importations

const CacheControlContentModal = (accessoires) => {
  // ...
  const [page, setPage] = UseState ([]);

  useEFFECT (() => {
    getMarkdownContentorUsedEfault (FileName, Defaultlang, Lang) .Then (Value => {
      setPage (valeur);
    });
  }, []);

  retour (
    <contentmodal content="{page}"></contentmodal>
  ));
};
Copier après la connexion

Cette approche fournit un système de documentation robuste, maintenable et localisé au sein de l'éditeur WordPress.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

<🎜>: Dead Rails - Comment apprivoiser les loups
4 Il y a quelques semaines By DDD
Niveaux de force pour chaque ennemi et monstre de R.E.P.O.
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
<🎜>: Grow A Garden - Guide de mutation complet
2 Il y a quelques semaines By DDD

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Tutoriel Java
1655
14
Tutoriel PHP
1254
29
Tutoriel C#
1228
24
Fontes variables de polices Google Fontes variables de polices Google Apr 09, 2025 am 10:42 AM

Je vois que Google Fonts a déployé un nouveau design (tweet). Comparé à la dernière grande refonte, cela semble beaucoup plus itératif. Je peux à peine faire la différence

Comment créer un compte à rebours animé avec HTML, CSS et JavaScript Comment créer un compte à rebours animé avec HTML, CSS et JavaScript Apr 11, 2025 am 11:29 AM

Avez-vous déjà eu besoin d'un compte à rebours sur un projet? Pour quelque chose comme ça, il pourrait être naturel d'atteindre un plugin, mais c'est en fait beaucoup plus

Guide des attributs de données HTML Guide des attributs de données HTML Apr 11, 2025 am 11:50 AM

Tout ce que vous avez toujours voulu savoir sur les attributs de données dans HTML, CSS et JavaScript.

Comment sélectionner un élément enfant avec l'élément de nom de première classe via CSS? Comment sélectionner un élément enfant avec l'élément de nom de première classe via CSS? Apr 05, 2025 pm 11:24 PM

Lorsque le nombre d'éléments n'est pas fixé, comment sélectionner le premier élément enfant du nom de classe spécifié via CSS. Lors du traitement de la structure HTML, vous rencontrez souvent différents éléments ...

Pourquoi les zones réduites pourpre dans la disposition Flex sont-elles considérées à tort «espace de débordement»? Pourquoi les zones réduites pourpre dans la disposition Flex sont-elles considérées à tort «espace de débordement»? Apr 05, 2025 pm 05:51 PM

Questions sur les zones de slash violet dans les dispositions flexibles Lorsque vous utilisez des dispositions flexibles, vous pouvez rencontrer des phénomènes déroutants, comme dans les outils du développeur (D ...

Une preuve de concept pour rendre Sass plus rapidement Une preuve de concept pour rendre Sass plus rapidement Apr 16, 2025 am 10:38 AM

Au début d'un nouveau projet, la compilation SASS se produit en un clin d'œil. Cela se sent bien, surtout quand il est associé à BrowSersync, qui recharge

Comment nous avons créé un site statique qui génère des modèles tartan dans SVG Comment nous avons créé un site statique qui génère des modèles tartan dans SVG Apr 09, 2025 am 11:29 AM

Le tartan est un chiffon à motifs qui est généralement associé à l'Écosse, en particulier leurs kilts à la mode. Sur tartanify.com, nous avons rassemblé plus de 5 000 tartan

See all articles