esup-multi

Arborescence des pages

Comparaison des versions

Légende

  • Ces lignes ont été ajoutées. Ce mot a été ajouté.
  • Ces lignes ont été supprimées. Ce mot a été supprimé.
  • La mise en forme a été modifiée.

...

La version fournie avec Multi permet une installation locale rapide avec Docker.

Bloc de code
languageyaml
version: "3.7"
services:

  wordpress-db:
    container_name: wordpress-db
    image: mysql:8.0bitnami/mariadb:latest
    volumes:
      - ./wp-data/mariadb_data:/bitnami/mariadb
    environment:
      MARIADB_ROOT_PASSWORD: rootpassword
      MARIADB_DATABASE: wordpress
      MARIADB_USER: wordpress
      MARIADB_PASSWORD: wordpress
    ports:
      - '3306:3306'
    volumesnetworks:
      - './wp-data/mysql-data:/var/lib/mysqlwordpress-network

  wordpress:
    container_name: wordpress
    image: bitnami/wordpress:latest
    restart: unless-stopped
    ports:
      - '9090:8080'
    commandnetworks:
     mysqld --default-authentication-plugin=mysql_native_password wordpress-network
    networksenvironment:
      # Variables spécifiques à -Bitnami wordpressWordPress
      restart: on-failure
WORDPRESS_BLOG_NAME: "Mon Blog"
     environment: WORDPRESS_USERNAME: admin
      MYSQLWORDPRESS_DATABASEPASSWORD: 'wordpress'password
      MYSQLWORDPRESS_USEREMAIL: 'wordpress'admin@example.com
      MYSQLWORDPRESS_BLOG_PASSWORDURL: 'wordpress'http://localhost:9090
      MYSQLWORDPRESS_ROOTSKIP_PASSWORDINSTALL: 'wordpress'

  wordpress:
${WORDPRESS_SKIP_INSTALL:-no}
      WORDPRESS_TABLE_PREFIX: wp_
      containerWORDPRESS_INSTALL_name: wordpress
    image: wordpress
    restart: on-failure
    ports:LOCALE: 'fr_FR' # Propre au script init-wordpress.sh

      # Connexion à la base de données
      WORDPRESS_DATABASE_HOST: wordpress-db
      WORDPRESS_DATABASE_PORT_NUMBER: 3306
      WORDPRESS_DATABASE_USER: wordpress
      - '9090:80'WORDPRESS_DATABASE_PASSWORD: wordpress
    networks:  WORDPRESS_DATABASE_NAME: wordpress

      # Variables -supplémentaires
  wordpress
    environment:
WORDPRESS_EXTRA_WP_CONFIG_CONTENT: |
        define('WP_ENVIRONMENT_TYPE:', 'local');
      WORDPRESS_DB_HOST: wordpress-db
      WORDPRESS_DB_USER: 'wordpress'
  define('WP_DEBUG_DISPLAY', false);

      # Sécurité supplémentaire avec un serveur proxy Nginx
#      WORDPRESSNGINX_DBUPLOADS_PASSWORDPROXY: 'wordpresshttp://localhost:8080'
#      WORDPRESS_DBHTACCESS_OVERRIDE_NAMENONE: 'wordpress'no
#      WORDPRESS_DBENABLE_HTACCESS_PORTPERSISTENCE: '3306'yes

    volumes:
      - ./wp-data/wordpress_data:/bitnami/wordpress
      - ./docker-entrypoint-init.d:/docker-entrypoint-init.d:ro
#      - ./wp-data/uploads:/var/www/html/wp-content/uploads # Ne pas monter directement dans /opt/bitnami/wordpress/wp-content/ car sinon l'init de l'image tombe en erreur
    depends_on:
      - wordpress-db

#  nginx:
#    container_name: nginx
#    image: nginx:latest
#    ports:
#      - '8080:80'
#    volumes:
#      - ./uploadsnginx.iniconf:/usr/local/etc/phpnginx/nginx.conf.d/uploads.ini

networks:
    wordpress:

:ro
#      - ./wp-data/uploads:/var/www/html/wp-content/uploads:ro
#    networks:
#      - wordpress-network
#    depends_on:
#      - wordpress

networks:
  wordpress-network:

Modifier les variables d'environnement du fichier pour coller à la configuration souhaitée puis monter les images docker via :Pour monter l'image Docker, il vous suffit de vous placer dans le dossier env/local/docker/wordpress et de lancer la commande : 

Bloc de code
$ docker compose up -d

Votre instance de Wordpress devrait alors être accessible à l'adresse : http://localhost:9090 

Supprimer les données inutiles

Pour éviter d'élargir les failles de sécurité possibles (Wordpress étant connu pour cela), il est préférable de supprimer tout le contenu présent de base et qui ne nous sera d'aucune utilité.

Supprimer les articles

De base, Wordpress est fourni avec un article d'exemple Bonjour tout le monde. Comme nous n'allons pas utiliser le type Article dans notre cas d'usage, l'accès au type va être masquer dans l'interface d'administration, mais le contenu sera toujours en base. 
Supprimez donc l'article en survolant le titre puis Corbeille. Pensez ensuite à vous rendre dans la corbeille et faire Vider la corbeille.

Supprimer les pages

De base, Wordpress est fourni avec deux pages d'exemple : Page d'exemple et Politique de confidentialité. Comme nous n'allons pas utiliser le type Page dans notre cas d'usage, l'accès au type va être masquer dans l'interface d'administration, mais le contenu sera toujours en base. 
Supprimez donc les pages en survolant le titre puis Corbeille. Pensez ensuite à vous rendre dans la corbeille et faire Vider la corbeille.

Supprimer les commentaires

De base, Wordpress est fourni avec un commentaire d'exemple, mais celui-ci est normalement supprimé automatiquement à l'issu de la suppression de l'article Bonjour tout le monde.
Si ce n'est pas le cas, pensez à le supprimer.

Supprimer les thèmes non utilisés

De base, Wordpress est fourni avec 3 thèmes. Celui activé par défaut est Twenty Twenty-Five.
De même, la gestion des thèmes va être désactivée car inutile dans notre configuration Headless. Donc autant supprimer les thèmes non activés (on ne pourra malheureusement pas supprimer le thème actif).

Dans le menu Apparence, survolez un thème et cliquez sur le bouton Détails du thème

Image Removed

Puis une fois dans les informations du thèmes, cliquez sur le bouton Supprimer tout en bas de la page.
Répétez l'opération pour tous les thèmes inactifs présents.

Supprimer les extensions inutiles

De base, Wordpress comprend 2 extensions d'exemple : Akismet et Hello Dolly.
Vous pouvez les supprimer en vous rendant dans le menu Extensions dans le menu de gauche et pour chaque extension : Désactiver puis Supprimer

Installation et configuration des extensions nécessaires

Remarque

La configuration Nginx permet de créer un proxy afin de délivrer les assets de manière statique. Elle n'a pas trop d'utilité sur une installation locale.
Cf plus bas pour configurer Nginx sur serveur.

Configurer Wordpress

A la première connexion il est important de suivre la configuration suivante, en essayant de respecter l'ordre pour éviter tous éventuels problèmes ou effets de bord inattendus vis à vis de l'utilisation un peu particulière qui est faite du CMS

Configurer les langues disponibles

Dans le menu latéral gauche, cliquez sur Langues > Configuration.

Sélectionnez les langues dont vous avez besoin et cliquez sur le bouton Ajouter une nouvelle langue

Image Added

Cliquez sur Continuer
N'autorisez pas la traduction des médias, puis revenir à l'administration en cliquant sur le bouton Retour au tableau de bord.

Il est nécessaire ensuite de sélectionner les collections qui bénéficieront des traductions. Pour cela, dans le menu latéral gauche, cliquez sur Langues > Réglages, puis dépliez la section Types de publication personnalisés et taxonomies.

Sélectionnez les collections suivantes :

  • Canaux de notifications (channels)
  • Formulaire de contact (contact_us)
  • Informations importantes (important_news)
  • Page de login (login)
  • Services (features)
  • Pages statiques (static_pages)
  • Widgets (widgets)

Puis cliquez sur Enregistrer les modifications

Image Added

Enfin dans le menu supérieur, cliquez sur Afficher toutes les langues et sélectionnez Français. Ceci permettra de n'afficher que le contenu en français dans le listing des articles.

Vérifier les mises à jour

Cliquer sur Mises à jour dans le menu latéral gauche et vérifier si des maj sont disponibles pour le core mais aussi les plugins et les traductions.

Si oui alors procédez aux mises à jour.

Info

On vérifie les mises à jour après la configuration des langues car l'utilisation de nouvelles langues va débloquer les mises à jour de nouveaux fichiers de langues.

Configurer

...

Pods

Par défaut, Wordpress ne propose que 4 types par défaut : Articles, Médias, Pages et Commentaires. On ne peut pas y toucher n'y même y ajouter des champs.
Pods est donc l'extension qui nous permet de créer des collections personnalisées dans Wordpress. 

Lien vers le plugin : https://fr.wordpress.org/plugins/pods/

Dans la section Extensions de Wordpress, faire Ajouter une extension, dans le champs Rechercher des extensions, saisir "Pods", localiser l'extension puis installez la et activez la.

Image Removed

Le plugin multi-wordpress-config permet déjà un paramétrage automatique assez conséquent de Pods, mais certaines options doivent tout de même être sélectionnées manuellement.

Rendez vous dans Une fois le plugin installé et activé, rendez vous dans Pods Admin > Composants puis désactivez le composant Templates. Étant donné que nous allons faire une utilisation headless de Wordpress, cette fonctionnalité ne nous sera pas utile.

De même, au niveau de Pods Admin > Réglages vous pouvez passer la fonctionnalité Dynamic Features à Disable All Dynamic Features in Pods (penser à enregistrer la modification avec le bouton en bas de page)

Installer et configurer Polylang

Polylang est le plugin qui va nous permettre de proposer des traductions dans nos collections personnalisées avec Pods.

Lien vers le plugin : https://fr.wordpress.org/plugins/polylang/

Dans la section Extensions de Wordpress, faire Ajouter une extension, dans le champs Rechercher des extensions, saisir "Polylang", localiser l'extension puis installez la et activez la.

Image Removed

Une fois le plugin installé et activé, il va vous demander de définir les langues nécessaires à votre application. Sélectionnez les langues dont vous avez besoin et cliquez sur le bouton Ajouter une nouvelle langue

Image Removed

Cliquez sur Continuer. N'autorisez pas la traduction des médias et choisissez le français comme langue des contenus présents dans le CMS.

L'installation est terminée, vous pouvez revenir à l'administration en cliquant sur le bouton Retour au tableau de bord.

Installer et configurer Disable Gutenberg

De base, Wordpress est livré avec un éditeur de contenu intitulé Gutenberg. Cet éditeur permet surtout de l'édition avancée au niveau apparence en proposant une palette de styles et de la gestion de blocs de contenu.
Dans notre cas, on souhaite seulement utiliser des champs d'édition classiques, du genre Wysiwyg à l'ancienne. Pour cela, il existe un plugin qui permet de revenir à un éditeur plus classique : Disable Gutenberg

Lien vers le plugin : https://wordpress.org/plugins/disable-gutenberg/

Dans la section Extensions de Wordpress, faire Ajouter une extension, dans le champs Rechercher des extensions, saisir "Disable Gutenberg", localiser l'extension puis installez la et activez la.

Image Removed

Aucun réglage supplémentaire n'est à prévoir.

...

Configurer WPGraphQL

Par défaut, Wordpress ne propose que du REST comme API disponible.
 Pour Pour pouvoir interfacer le connecteur CMS avec, qui lui gère les échanges en GraphQL, il est nécessaire d'ajouter utiliser un plugin supplémentaire :   WPGraphQL

Liens vers le plugin : https://wordpress.org/plugins/wp-graphql/

Dans la section Extensions de Wordpress, faire Ajouter une extension, dans le champs Rechercher des extensions, saisir "WPGraphQL", localiser l'extension puis installez la et activez la.

Image Removed

Le plugin vous demande si vous acceptez d'envoyer des données de manière anonyme, répondre Non.

Normalement, à l'ouverture de l'administration de Wordpress, vous devriez voir un bloc en haut de la page vous demandant d'aider WPGraphQL en envoyant des données, cliquez sur le bouton No Thanks.

Image Added

EnsuiteUne fois le plugin installé et activé, rendez vous dans GraphQL > Settings puis modifiez la configuration comme suit :

  • Restrict Endpoint to Authenticated Users : Cochez la case "Limit the execution of GraphQL operations to authenticated requests..."
  • Enable Batch Queries : Décochez la case "WPGraphQL supports batch queries..."
  • Enable GraphiQL IDE : Décochez la case "GraphiQL IDE is tool for exploring the GraphQL Schema and test GraphQL operations..."
  • GraphiQL IDE Admin Bar Link : Décochez la case "Show GraphiQL IDE Link in the Wordpress Admin Bar."

Pensez à enregistrer en cliquant sur le bouton Enregistrer les modifications en bas de page.

Vous pouvez réactiver les 2 derniers points si des fois vous voulez faire des essais de requêtes GraphQL sur votre structure.

Installer et configurer WPGraphQL Polylang

Par défaut le plugin WPGraphQL n'expose pas les informations de traductions d'un élément. Pour cela il faut ajouter un plugin tiers : WPGraphQL-Polylang

Remarque

Ce plugin n'est pas présent dans le Market Place de Wordpress. Il faut télécharger le fichier .zip depuis les sources Github du plugin : https://github.com/valu-digital/wp-graphql-polylang

Une fois que vous avez téléchargé le .zip du plugin (Bouton Code > Download ZIP), rendez-vous dans ExtensionsAjouter une extensionTéléverser une extension.
Choisissez le Zip téléchargé et cliquez sur Installer maintenant.

Image Removed

Puis cliquez ensuite sur Activer l'extension.

Installer et configurer Multi Custom Config

TODO

Optimisation et sécurité du CMS

TODO

Désactiver la MAJ auto de Wordpress et des plugins

Plugin CAS Authorizer

Exporter les données

TODO

Plugin utile : https://github.com/pods-framework/pods-export-code => permet via l'interface de Pods de générer le code PHP du CPT et ses custom fields

Export media with selected post : https://wordpress.org/plugins/export-media-with-selected-content/#images%20seem%20to%20be%20missing%20in%20the%20export%20file

Avertissement

Ancienne documentation de Tristan (en cours de restructuration)

Installation

WordPress peut être déployé avec Docker, voici un exemple d'un docker-compose (pour plus d'informations sur le paramétrage, vous pouvez vous référer à la documentation WordPress) : 

L'exemple utilise une base de données Mysql et WordPress se lance sur le port 9090 que vous pouvez modifier dans la configuration.

Bloc de code
titledocker-compose.yml
version: '3.1'

services:

  wordpress:
    image: wordpress
    restart: always
    ports:
      - 9090:80
    environment:
      WORDPRESS_DB_HOST: db
      WORDPRESS_DB_USER: exampleuser
      WORDPRESS_DB_PASSWORD: examplepass
      WORDPRESS_DB_NAME: exampledb
    volumes:
      - ./wordpress:/var/www/html

  db:
    image: mysql:8.0
    restart: always
    environment:
      MYSQL_DATABASE: exampledb
      MYSQL_USER: exampleuser
      MYSQL_PASSWORD: examplepass
      MYSQL_RANDOM_ROOT_PASSWORD: '1'
    volumes:
      - ./db:/var/lib/mysql

Import de la structure de données

L'import de structure de données se fait au niveau du plugin ACF dans l'onglet Outils :

Image Removed 

Ensuite, il suffit de sélectionner le fichier à importer : 

Image Removed

Import des données d'exemple

Quand les collections sont importées, on peut utiliser la fonction d'import de WordPress pour importer les données :

Image Removed

Puis importer les données pour chaque collection en suivant les instructions : 

Image Removed

Import des images

Dans l'onglet Médias, on peut importer ou supprimer des images. Pour les collections qui nécessitent des images, on a la possibilité de directement importer ou de sélectionner une image. 

Image Removed

Les extensions

Pour le bon fonctionnement du projet, on a besoin de plusieurs extensions :

  • Advanced Custom Fields (ACF) : permet de créer des collections complexes et de les exposer via des API
  • Code Snippets : (optionnel) permet de configurer facilement et rapidement des webhooks suivant le besoin du projet 

ACF

Dans l'application, on utilise deux fonctionnalités principales de l'extension ACF 

  • Type de publication : permet de créer des collections et de les configurer (accès API, droits utilisateurs, etc) 
  • groupes de champs : permet de définir les champs qui composent une collection

Type de publication

Un type de publication se compose d'un libellé au pluriel et au singulier, ainsi qu'une clé. Pour accéder à la collection dans le menu, il faut la rendre publique. 

Image Removed

Dans les réglages avancés, on va garder cochés seulement les éléments présents ci-dessous : 

Image Removed

C'est également dans les réglages avancés que l'on peut changer les accès utilisateurs et certaines configurations pratiques. Il faudra également penser à définir une route pour l'API et l'activer.

Image Removed

Groupes de champs

Dans la partie groupes de champs, on peut ajouter, modifier et supprimer les champs qui vont composer la collection. Avec la version gratuite de l'extension, on a accès à tous les champs classiques (texte, image, url, etc), la version payante n'ajoute que des champs qui facilitent la mise en page.

Image Removed

Il ne faut pas oublier d'attribuer le groupe de champs au type de publication qui lui correspond dans les réglages.

Image Removed

Les collections

Quand une collection est créée, on peut y accéder via le menu à gauche. Dans la vue de la collection, on a la liste des objets déjà créées, que l'on peut modifier ou supprimer. On a également la possibilité de créer de nouveaux objets.

Image Removed

Pour chaque objet, il faut renseigner un titre et remplir l'ensemble des champs qui composent la collection. Une fois terminé, il faut cliquer sur le bouton publier ou mettre à jour pour sauvegarder l'objet.

Image Removed

Pour aller plus loin

Export des données

Pour exporter les données, on utilise la fonction WordPress dans l'onglet Exporter du menu Outils. Dans cette vue, on a la possibilité d'exporter les données de toutes les collections ou de le faire individuellement pour chaque collection.  

Image Removed

Export de la structure de données

L'export des collections se fait dans le menu ACF, dans la partie Outils. Comme pour l'export des données, on peut choisir entre tout exporter ou exporter seulement les collections qui nous intéressent. On peut aussi choisir d'exporter soit les groupes de champs ou les types de publication.

Importer les données

L'image Wordpress sur le projet Multi est accompagnée d'un set de données. Vous pourrez les trouver dans le dossier env/local/docker/wordpress/imports/.
Le fichier 0 - data.xml contient l'ensemble des données pour toutes les collections présentes. Si vous ne souhaitez pas importer toutes les données mais seulement celles de quelques collections, vous trouverez un fichier de données par collection.
Il est cependant recommandé de respecter l'ordre suggéré par les numéros de fichiers car certains jeux de données dépendent d'autres collections.

Pour importer les données dans Wordpress, sélectionnez Outils > Importer dans la barre latérale gauche, puis cliquez sur Lancer l'outil d'importation en bas du bloc.

Cliquez ensuite sur Choisir un fichier et sélectionnez le fichier de données souhaité. Puis cliquez sur Téléverser et importer le fichier.
Enfin sur la page suivante, sélectionner admin (admin) à assigner aux articles et cliquer sur le bouton Envoyer (ne pas cocher Téléverser et importer les fichiers joints).

Optimisation et sécurité du CMS

Désactiver toutes les options relatives aux commentaires

Les commentaires n'étant d'aucune utilité dans notre cas d'usage, toutes les options en rapport peuvent être désactivées.

Dans la barre latérale gauche, Réglages > Commentaires et décochez les options inutiles.

Erreurs rencontrées

Failed to execute /docker-entrypoint-init.d/init-wordpress.sh

Vérifier les droits sur le fichier init-wordpress.sh

Bloc de code
languageyaml
chmod 755 init-wordpress.sh
chmod +x init-wordpress.sh

...