Corriger l’erreur Gravity Form « Call to a member function can_be_used() on bool »

Cet article est plus lĂ  pour mon moi du futur, mais ça peut en aider d’autres.

Suite Ă  la mise Ă  jour vers Gravity Form 2.6.2, je me suis retrouvĂ© sur plusieurs sites dont j’ai la maintenance avec une erreur fatale ressemblant Ă :

[06-May-2022 20:30:52 UTC] PHP Fatal error:  Uncaught Error: Call to a member function can_be_used() on bool in /var/www/my-great-website/wp-content/plugins/gravityforms/common.php:2813
Stack trace:

Je n’ai pas trop creusĂ© pour en connaitre la cause… je ferais ca un peu plus tard… quand un site client est en rade… on corrige vite 😉

Pour corriger cette erreur il m’a suffit d’ajouter

define( 'GF_CACHE_DEBUG', true );

dans le `wp-config.php` puis d’aller resauver les rĂ©glages des formulaires (sans rien changer)

Cette erreur arrive lorsque la vĂ©rification de licence Ă©choue. Les dĂ©veloppeurs de Gravity Forms sont en train d’Ă©tudier la question et vont publier prochainement une nouvelle version.

La constante ajoutée permet de valider la licence sans prendre en compte les données en cache.

Dites-moi en commentaire si vous avez eu cette erreur et que cette astuce vous a aidée!

Affichez facilement le fil de votre page Facebook.

J’ai eu un besoin simple ces derniers jours… afficher le fil d’une page Facebook sur un site client. J’ai bien sĂ»r regardĂ© du cĂŽtĂ© des extensions existantes ce qui Ă©tait proposĂ© et… il faut bien avouer qu’il y en a une tonne !

Une tonne, c’est bien… mais rien ne correspondait vraiment Ă  mon besoin, car Ă©tait trop complexe Ă  mettre en place, nĂ©cessitait un compte Facebook pour crĂ©er une application. Bref ce dont j’avais besoin, c’Ă©tait simplement ce que propose Facebook sur sa « plugin page ».

Alors bien sĂ»r… j’aurais pu coder mon truc dans mon coin… et je me suis dit
 si j’ai le besoin, alors surement que d’autres aussi… fais en donc une extension mon brave SĂ©b !

Une nouvelle extension signée thivinfo.com

C’est une extension trĂšs simple, il y a un shortcode code court et un bloc pour le nouvel Ă©diteur (merci Ă  Marie Comet).
Le code court [\simple_wall] attends au moins un paramĂštre slug qui attend le slug de votre page Facebook…

Exemple : le code court [\simple_wall slug="MotoGP"] (sans le slash qui a Ă©tĂ© ajoutĂ© pour que WP ne l’interprĂšte pas) devrait afficher le fil de la page Facebook dĂ©diĂ© Ă  ce sport dont nous sommes champion du monde (comment ça je m’Ă©loigne ?).

Le voici en action :
[simple_wall slug=’MotoGP’]

Le bloc Gutenberg « Simple Wall » lui est disponible dans la liste des blocs et attends également le slug de la page à afficher.

Les 2 autres paramĂštres optionnels sont la largeur et la hauteur d’affichage.

Les Ă©volutions prĂ©vues…

J’utilise plus Twitter (ce qui est assez simple puisque je n’ai pas de compte FB) et je me demande si je ne pourrais pas faire Ă©voluer l’extension pour afficher le fil Twitter Ă©galement… dites-moi en commentaire si cela vous intĂ©resserait.

DĂ©ployez votre site Web grĂące aux Github Actions

Je vous ai déjà parlé des Github Actions dans un article précédent afin de publier facilement votre extension WordPress sur le dépÎt officiel des extensions.

Aujourd’hui, l’idĂ©e, c’est de dĂ©ployer automatiquement vos dĂ©veloppements quand vous poussez vos modifications sur GitHub

État des lieux

Actuellement, je publie mes modifications sur les sites WordPress de mes clients grĂące au DeployHQ.com. C’est un service trĂšs simple Ă  mettre en place:

  • On lie DeployHQ Ă  notre profil Github
  • On sĂ©lectionne le dĂ©pĂŽt GH Ă  dĂ©ployer
  • On paramĂštre la connexion SFTP sur notre hĂ©bergement

A ce moment la, DeployHQ ajoute un webhook qui sera déclenché à chaque push sur une branche définie de notre repo Github qui lancera le déploiement.

Quelques secondes plus tard (ou ça se compte en seconde), vos modifications sont en ligne.

DeployHQ fonctionne bien… alors pourquoi changer ?

Ben oui pourquoi ?

Au-delĂ  de cette raison tout Ă  fait louable, il se trouve j’avais envie de tester une alternative !

Principe des Github Actions

En simple, Github Actions permets d’automatiser des taches selon des Ă©vĂšnements se produisant sur le dĂ©pĂŽt sur lequel il est actif.

Des taches, il peut y en avoir des centaines, voir des milliers et afin d’aider les dĂ©veloppeurs, Github a mis en place une place de marchĂ© ou chacun peu publier son Action afin de la partager.

Le principe:

  • On crĂ©e un fichier de configuration au format yml.
  • Ce fichier est stockĂ© dans votre dĂ©pĂŽt GitHub
  • Lorsque l’action dĂ©finie dans le fichier de configuration est exĂ©cutĂ©e, GitHub Actions entre en jeu et exĂ©cute alors les tĂąches qu’on lui a demandĂ©es.

Passons Ă  la pratique

Dans le paragraphe prĂ©cĂ©dent, je vous ai parlĂ© d’une place de marchĂ©. Sur cette place de marchĂ©, je suis tombĂ© sur https://github.com/marketplace/actions/ssh-deploy qui selon la description, fait exactement ce dont j’ai envie.

En pratique, il faut crĂ©er dans votre projet un dossier .github qui contiendra lui-mĂȘme un dossier workflows. À l’intĂ©rieur de ce dossier vous ajouterez un fichier qui portera le nom que vous voudrez, mais qui sera au format yml. Par exemple deploy.yml.

GitHub actions

Dans ce fichier deploy.yml on ajoutera ce code:

name: Deploy

on:
  push:
    branches:
      - master

jobs:
  build:

    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v1
      - name: Install Node.js
        uses: actions/setup-node@v1
        with:
          node-version: '10.x'
      - name: Install npm dependencies
        run: npm install
      - name: npm init
        run: npm init -y
      - name: Run build task
        run: npm run build --if-present
      - name: Deploy to Server
        uses: easingthemes/ssh-deploy@v2.1.7
        env:
          SSH_PRIVATE_KEY: ${{ secrets.SERVER_SSH_KEY }}
          ARGS: "-avz --delete"
          REMOTE_HOST: ${{ secrets.REMOTE_HOST }}
          REMOTE_PORT: ${{ secrets.REMOTE_PORT }}
          REMOTE_USER: ${{ secrets.REMOTE_USER }}
          TARGET: ${{ secrets.REMOTE_TARGET }}
          EXCLUDE: "/.git, /.github, /dist/, /node_modules/"

Et qu’est ce ca veut dire ?

name: Deploy

Est simplement le nom de cette action, car bien sur, vous pouvez avoir autant d’action que vous le dĂ©sirez.

on:
push:
branches:
- master

Quand est ce qu’on jour cette action ? facile ! « sur » le « push » de la « branche » « master ».

Ainsi on peut imaginer avoir une autre action avec :

on:
  push:
    branches:
      - staging

Le bloc qui nous intéressera ensuite est:

        env:
SSH_PRIVATE_KEY: ${{ secrets.SERVER_SSH_KEY }}
ARGS: "-avz --delete"
REMOTE_HOST: ${{ secrets.REMOTE_HOST }}
REMOTE_PORT: ${{ secrets.REMOTE_PORT }}
REMOTE_USER: ${{ secrets.REMOTE_USER }}
TARGET: ${{ secrets.REMOTE_TARGET }}
EXCLUDE: "/.git, /.github, /dist/, /node_modules/"

Car il définit les informations liées à Rsync

SSH_PRIVATE_KEY

La clĂ© SSH privĂ©e servant au dĂ©ploiement. Selon la doc de l’Action, vous pouvez en crĂ©er une avec la commande:

ssh-keygen -m PEM -t rsa -b 4096

Cette commande va créer une clée privée, a garder secrete et une clé publique.

La clĂ© publique est Ă  ajouter dans le fichier /home/user/.ssh/authorized_key de votre serveur / HĂ©bergement. Le chemin sera Ă  adapter selon que vous ĂȘtes sur un hĂ©bergement mutualisĂ© autorisant SSH ou sur un serveur dĂ©diĂ© ou autre cas.

La clĂ© privĂ©e doit quant Ă  elle ĂȘtre stockĂ©e sur votre compte Github dans les rĂ©glages du dĂ©pĂŽt que vous voulez dĂ©ployer. Le principe sera le mĂȘme pour chacune des instructions qui suivront.

github actions secrets

En cliquant sur « New repository secret » vous aurez 2 champs.

  • Le champ « Name » prendra la partie en majuscule de vos rĂ©glages soit par exemple SERVER_SSH_KEY
  • Le champ « Value » prendra quant Ă  lui la valeur Ă  envoyer lors du transfert (ici la valeur de la clĂ© privĂ©e)
ARGS: "-avz --delete"

Les arguments de RSYNC Ă  retrouver dans sa doc

Je vous invite Ă  regarder la doc trĂšs simple et claire de l’Action pour les autres paramĂštres.

Tadam!

Normalement… si tout s’est bien passĂ©, vos modifications sont tĂ©lĂ©versĂ©es automatiquement lorsque vous les poussez sur votre branche principale (ou sur la branche que vous avez choisie)

Conclusion

Vous savez maintenant utiliser les Github Actions pour dĂ©ployer vos sites, il ne reste plus qu’Ă  faire de jolis site web 😉

Si comme moi vous ĂȘtes dĂ©veloppeur WordPress mais que vous hĂ©bergez vos sites chez WPEngine, sachez qu’il existe une action qui permet de dĂ©ployer directement chez WPEngine !

Je dĂ©bute avec cet outil… si vous avez des questions… c’est pas gagnĂ©, mais tentez quand mĂȘme en laissant un commentaire.

Il faut sauver le soldat Mozilla!

Aujourd’hui, je prends le clavier pour vous parler de tout autre chose que WordPress. Mozilla, l’entitĂ© qui dĂ©veloppe l’excellent navigateur internet Firefox a annoncer supprimer encore 1/4 de ses effectifs.

Les suppressions d’emploi ne sont pas le principal problĂšme…

DĂ©rriĂšre l’annonce de Mozilla se cache quelque chose de bien plus grave Ă  mon sens… puisque la disparition de Firefox entrainerait un afflux vers son concurrent Google Chrome et donnerait encore plus de poids a ce gĂ©ant qui a fait du monopole sont cheval de bataille.

Ouais mais moi j’aime bien Google Chrome!

Oui et personne ne t’empĂȘche de t’en servir mais afin de garder un semblant de libertĂ© dans ce monde, ce serait bien d’utiliser aussi Mozilla Firefox afin de lui faire prendre des parts de marchĂ© et donner foi Ă  ses dĂ©veloppeurs.

Le but n’est pas de voir Firefox avec 90% de part de marchĂ© comme l’explique trĂšs bien Nicolas Hoffman dans son tweet :

Le but c’est de garder le choix d’utiliser Firefox, Chrome, Edge ou tout autre navigateur web afin qu’aucun n’ai un monopole et dicte ses rĂšgles et nous prive de nos libertĂ©s de choix et accessoirement revende nos donnĂ©es personnelles.

Ajouter des icÎnes personnalisées à vos projets avec ACF et ACF: FontAwesome Field

Si vous avez l’habitude de crĂ©er votre propres icĂŽnes web, vous devez connaĂźtre Icomoon. Pour un projet client utilisant dĂ©jĂ  FontAwesome, j’ai eu besoin d’ajouter 2 icĂŽnes personnalisĂ©es provenant en utilisant le service Icomoon.

Pour cet article, j’ai utilisĂ© Icomoon mais vous devriez pouvoir adapter, vous inspirer de cet article pour insĂ©rer n’importe quel icĂŽne personnalisĂ©.

Les icĂŽnes FontAwesome Ă©taient utilisĂ©es sur des Ă©lĂ©ments de menu grĂące Ă  Advanced Custom Fields et Advanced Custom Fields: Font Awesome Field. le but est donc d’ajouter Ă  la liste des icĂŽnes FontAwesome, mes 2 ou 3 icĂŽnes customs d’icomoon.

Afficher les icones Icomoon dans le champs ACF FontAwesome

Advanced Custom Fields: Font Awesome Field que je nommerai dorénavant ACFFA propose un filtre permettant de venir modifier la liste des icÎnes:

ACFFA_get_icons
add_filter( 'ACFFA_get_icons', 'cot_test' );
function cot_test( $icons ) {
$icomoon = array(
'cierge' => array(
'name' => 'cierge',
'hex' => '\e90e',
'unicode' => ''
),
'calice' => array(
'name' => 'calice',
'hex' => '\e90f',
'unicode' => ''
),
);
foreach ( $icomoon as $ico ) {
$icons['list']['far'][ 'far ' . $ico['name'] ] = '<i class="icon-' . $ico['name'] . '"></i> ' . ucfirst(
$ico['name'] );
$icons['details']['far']['far ' . $ico['name']]['hex'] = $ico['hex'];
$icons['details']['far']['far ' . $ico['name']]['unicode'] = $ico['unicode'];
}

return $icons;
}

Ici nous filtrons la liste existantes des icĂŽnes FA pour y ajouter nos icĂŽnes personnalisĂ©es. Malheureusement, l’extension de Matt Keys Ă©tant dĂ©veloppĂ©es pour FA, seules les catĂ©gories FontAwesome sont disponible Ă  savoir Brand (fab), Regular (far), Style (fas). J’ai dĂ©cidĂ© d’ajouter mes icĂŽnes dans les Regular soit Far. Ceci est purement arbitraire.

DĂ©cortiquons le code ci-dessus

array(
'cierge' => array(
'name' => 'cierge',
'hex' => '\e90e',
'unicode' => '&#xe90e;'
),

Ici je déclare les icÎnes Icomoon que je vais vouloir utiliser:

  • name: le nom de l’icĂŽne dans la liste
  • hex: le code hexadĂ©cimal fourni par Icomoon
  • unicode: l’unicode de l’icĂŽne Icomoon

Ensuite, avec une boucle foreach, je vais alimenter le tableau $icons contenant les icĂŽnes FontAwesome

Afficher les icĂŽnes en back-office

Pour afficher les icÎnes en back-office, il va falloir que la feuille CSS Icomoon avec toutes les icÎnes soient chargées coté back-end.

Pour ça, nous allons ajouter ce code:

add_action( 'admin_print_styles', 'cot_load_icomoon_css' );

Si vous ĂȘtes habituĂ©s a dĂ©velopper vos thĂšmes vous connaissez le hook d’action WordPress wp_enqueue_scripts qui permet de charger des feuilles de styles et des scripts en front-end. Sachez qu’il existe aussi un Ă©quivalent pour le back-office et il se nomme admin_print_styles.

add_action( 'admin_print_styles', 'cot_load_icomoon_css' );
add_action( 'wp_enqueue_scripts', 'cot_load_icomoon_css', 9, 1 );
function cot_load_icomoon_css(){
wp_enqueue_style( 'font-icomoon', get_template_directory_uri() . '/css/iconmoon.css');
}

Ici je charge donc la feuille CSS en front et en back-office.

J’ai mis une prioritĂ© 9 au chargement front afin de passer juste avant le chargement de la feuille de style du thĂšme et de pouvoir par la suite les utiliser dans mon thĂšme. Par dĂ©faut un add_action() Ă  une prioritĂ© de 10.

Afficher les icĂŽnes en front office

En front-office, l’extension ACF FontAwesome retourne un balisage HTML formatĂ© pour FA (normal!). Nous, on veut que dans certains cas, celui de notre icĂŽne personnalisĂ©e on aille charger une autre police (celle gĂ©nĂ©rĂ©e par Icomoon).

Icomoon m’a fourni 4 fichiers de polices de caractĂšres ( .eot, .svg, .ttf et .woff) que j’ai placĂ© dans mon projet. Le fichier icomoon.css fait un @font-face afin que les polices soient chargĂ©es

Le problĂšme rĂ©side dans le fait que l’extension de Matt Keys gĂ©nĂšre un markup HTML FA et qu’il va falloir « ruser » pour dĂ©tourner le fonctionnement seulement pour les icĂŽnes Icomoon. Et oui, on veut pouvoir continuer Ă  utiliser normalement FontAwesome!

<i class="far cierge" aria-hidden="true"></i>

On retrouve la class far de FA qui va charger la police FontAwesome puis la class cierge générée à partir du nom données dans la liste des extension a insérer.

Pour que le site charge ma police au lieu de celle de FontAwesome, j’ai crĂ©Ă© une feuille CSS modifiant le style des ces classes:

.far.cierge:before {
font-family: "ma-police-icomoon";
content: "\e90e";
}

Pour chaque icĂŽne personnalisĂ©e je demande Ă  WordPress de charger ma-police-icomoon et d’utiliser le contenu ayant le code hex corespondant Ă  mon icĂŽne.

Kawi : le thÚme qui vous veut du bien !

Je vous propose aujourd’hui un article un peu diffĂ©rent puisque que je vais vous prĂ©senter un thĂšme… ne vous attendez pas Ă  une review de 4000 lignes… je n’ai pas les talents d’Ă©criture de la marmite!

Dis c’est quoi ton thĂšme ?

Le thĂšme dont je voulais vous parlez n’est autre que celui que vous voyez habiller thivinfo.com: Kawi de Vincent Dubroeucq

Pourquoi Kawi ?

C’est assez simple, je ne suis pas dĂ©veloppeur front, je ne voulais pas dĂ©velopper un thĂšme de A Ă  Z sachant que des collĂšgues de la communautĂ© francophone WordPress en avaient dĂ©jĂ  dĂ©veloppĂ©s des bons…

Mon amie Marie Comet m’a simplement fait dĂ©couvrir le thĂšme de Vincent en me disant:

  • Il est lĂ©ger
  • respectueux des bonnes pratiques de dĂ©veloppement WordPress et de l’accessilbilitĂ© (a11y)
  • facile Ă  customiser

Bingo! je pars la dessus.

Un thĂšme enfant ou un starter thĂšme ?

Je me suis alors posĂ© la question, est ce que tu vas t’en servir comme un starter thĂšme ou bien plus classiquement en crĂ©ant un thĂšme enfant?

Outre la version du rĂ©pertoire officiel des thĂšmes WordPress, Vincent propose Ă©galement son thĂšme sur Github. L’avantage de cette version Ă©tant de proposer les sources SASS qui compose la feuille de style. Il s’agit donc d’une version plus orientĂ©e pour les dĂ©veloppeurs qui voudraient s’en servir de base de travail…

Ok, mais ai je envie de me couper des amĂ©liorations que Vincent pourrait apporter a son thĂšme? pas vraiment, j’ai donc optĂ© pour la crĂ©ation d’un thĂšme enfant afin de garder les possibles futures Ă©volutions du thĂšme.

La  version que vous voyez est donc la version enfant du thÚme disponible gratuite sur le repertoire WordPress.

Pourquoi changer de thĂšme ?

Et pourquoi pas d’ailleurs?!

En premier lieu car le prĂ©cĂ©dent basĂ© sur le thĂšme Humescores de Morten Rand-Hendriksen avait pris de l’embonpoint au fil des ans. Au bout de 4 ans environs, Ă  force de tests, de modifications graphiques, fonctionnelles… le thĂšme Ă©tait devenu lourd Ă  gĂ©rer et Ă  charger.

Et puis l’envie de changer un peu Ă©galement!

Quelles modifications ont été apportés ?

Finalement trĂšs peu car en tant que grand artiste devant l’Ă©ternel, j’ai repris quasiment le mĂȘme style et la mĂȘme disposition de la page d’accueil!

La diffĂ©rence se trouve plutot sous le capot car le CSS de mon thĂšme enfant est crĂ©Ă© grĂące Ă  SASS ce qui ma permis de dĂ©couvrir l’excellent outils Prepros m’Ă©vitant une installation d’un outils supplĂ©mentaire comme Gulp et ses multiples dĂ©pendances jamais a jour quand je veux l’utiliser. A propos de Sass, si vous dĂ©sirez comprendre rapidement le principe, je vous conseille la vidĂ©o de l’atelier animĂ© par Thierry Pigot de WP Paris

RĂ©sultats

Le rĂ©sultat se rĂ©sume donc Ă  un site plus rapide a s’afficher, plus accessible aux personnes en situation de handicap ou utilisant du matĂ©riel adaptĂ©. Pour moi, il s’agit d’un thĂšme plus lĂ©ger a maintenir et prĂȘt a Ă©voluer selon mes futures idĂ©es…

3, 2, 1 Traduisez!

Le 17 avril 2020 aurait du y avoir lieu un WordCamp Ă  Paris. Compte tenu de la situation dĂ» au COVID19, celui ici comme tant d’autres a Ă©tĂ© annulĂ©.

L’idĂ©e d’organiser une journĂ©e de rencontre virtuelle Ă  donc germĂ©e dans la tĂȘte de plusieurs membres de la communautĂ© WordPress Francophone !

On organise donc une demie journée de contribution au projet WordPress ouverte à tous que vous soyez contributeur aguerri ou néophyte.

Participer

Pour participer rien de plus simple, inscrivez vous pour participer Ă  la visioconfĂ©rence Zoom. La coordination se fera Ă©galement via le Slack de la communautĂ© francophone et plus particuliĂšrement sur la chaine #wptranslationday, pour obtenir une invitation, c’est par ici

Lire l’annonce officielle

A vendredi !

WP Grid Builder pour créer facilement un systÚme de recherche à facettes avec WordPress

Aujourd’hui je vais vous prĂ©senter une solution française pour crĂ©er une systĂšme de recherche Ă  facette !

Qu’est ce qu’une recherche Ă  facette ?

Une recherche Ă  facette est une technique permettant de resserrer les rĂ©sultats au fur et Ă  mesure que l’on sĂ©lectionne des critĂšres de recherches.

Mais si vous savez, vous arrivez sur une page avec 200 T-shirt. Vous sélectionnez votre taille, il reste 128 choix, puis la couleur il reste 50 possibilité, puis le prix et vous obtenez le seul modÚle que vous pouvez vous offrir!

Jusqu’il n’y a pas si longtemps, il fallait, sur WordPress, utiliser l’extension FacetWP mais depuis peu, une nouvelle extension dĂ©veloppĂ©e dans le sud de la France Ă  fait son apparition : WP Grid Builder

Si FacetWP se limite à proposer un outils orienté développeurs pour créer des facettes, WP Grid Builder est lui orienté grand public et ne se content pas de proposer des facettes.

Des facettes et des grilles de contenus

En effet, il propose aussi l’affichage de grille (Grid) et de templates, le tout facilement administrable dans le backoffice de votre WordPress.
Ainsi les non développeurs pourront sans une ligne de code créer une page comportant une zone de recherche a facettes et afficher la résultats sous forme de grille.

WP Grid Builder pour les développeurs.

Vous ĂȘtes dĂ©veloppeur alors bĂ©nĂ©ficiez de toute la puissance de WP Grid Builder en crĂ©ant vos facettes et vos templates directement dans vos projets.

WP Grid Builder a été pensé pour que les développeurs de site web WordPress puissent aisément réaliser toutes sorte de projets. Ainsi ils retrouveront des fonctions et hooks PHP et JS.

Bien sur, une documentation détaillée des fonctions est disponible sur son site internet

WP Grid Builder pour les nons développeurs.

Vous n’ĂȘtes pas dĂ©veloppeurs ?

Rien de grave, Loïc a pensé a tout. Ainsi vous pourrez créer vos facettes, vos grilles et vos cartes directement dans le back-office et afficher vos créations via des codes courts ou bien des blocks Gutenberg pour le nouvel éditeur.

Allo Docteur? J’ai un problĂšme!

Qui ne s’est jamais retrouvĂ© devant son site internet ou celui d’un client Ă©qui ne fait pas ce qu’on veut » ? C’est Ă  ce moment lĂ  que le support des extensions payante entre en jeu… et avec WP Grid Builder, en tant que francophone nous sommes gĂątĂ© puisque LoĂŻc vit dans le sud de la France.

Il rĂ©ponds donc en français sur notre fuseau horaire… ce qui apporte une rĂ©activitĂ© qui est toujours apprĂ©ciĂ©e!

Rien ne vaut des exemples!

Comme on dit: Une image vaut 1000 mots. je viens de remplacer FacetWP sur Thivinfo.com par WP Grid Builder.

Voyez plutÎt le résultat:

Amusez-vous bien 🙂

Créer vos blocs Gutenberg facilement avec Carbon Fields

Présentation de Carbon Fields

Carbon Fields est une solution concurrente du cĂ©lĂšbre Advanced Custom Field (ACF) mais qui a la particularitĂ© de pouvoir ĂȘtre embarquĂ© dans vos thĂšmes et extensions maison.

En effet, vous ne pouvez pas utiliser ACF Pro dans vos extensions gratuites a destination par exemple du dépÎt WordPress.

Comme ACF, Carbon Fields propose une solution entiÚrement en PHP pour créer des blocs compatibles avec le nouvel éditeur de WordPress: Gutenberg!

Les blocs Gutenberg ont fait leur apparition dans Carbon Fields 3.0.

Installer Carbon Fields

Attention, la version disponible sur le dĂ©pĂŽt WordPress est loin d’ĂȘtre Ă  jour.

Installer Carbon Fields avec Composer

Cette mĂ©thode a une approche plus orientĂ©e « dĂ©veloppeur », c’est celle qui est mise en avant dans la documentation de Carbon Fields.

Bien sur, votre systĂšme doit disposer de Composer mais si vous suivez cette section, je suppose que vous connaissez, l’avez dĂ©jĂ  installĂ© sinon je vous invite Ă  suivre la seconde mĂ©thode, sans Composer ou bien Ă  installer Composer.

Rendez vous dans le rĂ©pertoire de l’extension ou du thĂšme dans lequel vous voulez ajouter votre bloc Gutenberg.

Pour la suite du tutoriel, je partirais du principe que nous sommes dans une extension mais dans le cas d’un thĂšme, vous initialiserez Carbon Fields dans votre functions.php.

La commande :

composer require htmlburger/carbon-fields

va installer carbon-fields dans le dossier vendor de votre projet. Si celui-ci n’existe pas, alors il sera crĂ©Ă©.

Ensuite dans le fichier principal de votre extension, ajoutez le code suivant:

Installer Carbon Fields sans Composer

Sans Composer, vous devrez tĂ©lĂ©charger Carbon Fields, le dĂ©compresser et l’ajouter a votre projet.

Ensuite il conviendra d’adapter la fonction de chargement:

CrĂ©ation d’un Bloc Gutenberg en PHP

Comme je le disais en introduction, Carbon Fields est un produit similaire Ă  ACF Ă  ceci prĂšs qu’il ne dispose pas d’une interface graphique pour la crĂ©ation des champs personnalisĂ©.

C’est un paragraphe dĂ©diĂ© Ă  la crĂ©ation de bloc Gutenberg et il nous cause de champs personnalisĂ©… il a craquĂ©!

mes gentils lecteurs 🙂

Effectivement, si je vous parle de champs personnalisĂ© ici c’est que, comme ACF, ils vont ĂȘtre la matiĂšre premiĂšre pour crĂ©er notre bloc.

Tous les types de champs que vous retrouverez dans la documentation sont utilisable pour ajouter des réglages a notre bloc Gutenberg.

En route pour la création!

PremiÚre étape, créer un fichier PHP qui accueillera vos déclarations de fonctions qui créeront le bloc.

Ici c’est selon vos habitudes, en procĂ©dural ou en POO, un simple fichier PHP ou bien une classe.

Je vais pour ce tutoriel l’Ă©crire en PHP procĂ©dural afin qu’il soit le plus accessible possible. Ceux ayant l’habitude de dĂ©velopper en OrientĂ© Objet, n’auront aucun mal Ă  adapter leur code.CrĂ©er un fichier mon-block.php

Une fois créé, nous allons déclarer le bloc:

Expliquons ce que fais ce code:

use Carbon_Fields\Block;

va simplement dire a notre fichier PHP qu’il faut utiliser Carbon_Fields et notament la sections dĂ©diĂ© aux Blocks.

Block::make( __( 'My Shiny Gutenberg Block' ) )

va dĂ©clarer le bloc auprĂšs de WordPress. Il aura ici le nom de « My Shiny Gutenberg Block ». Notez que le nom du block est dĂ©clarĂ© dans une function d’internationalisation (i18n) qui va permettre de traduire votre bloc.

Il serait d’ailleurs judicieux d’y ajouter votre text-domain ce qui donnerait:

Block::make( __( 'My Shiny Gutenberg Block', 'mon-text-domain ) )

Ensuite vient la déclaration des paramÚtres de votre bloc Gutenberg qui se fait via la méthode add_fields( )

Ici nous ajoutons 3 réglages:

  • un champ de texte simple
  • un champ de sĂ©lection d’image
  • un champs de texte riche.

Les champs sont tous crĂ©Ă© sur le mĂȘme modĂšle:

Field::make( 'type de champs', 'identifiant unique', 'libellé du champs')

Enfin, la mĂ©thode set_render_callback() va elle gĂ©nĂ©rer l’affichage front ainsi que la prĂ©visualisation de votre bloc Gutenberg.

Dans les faits, Ă©crivez une fonction qui va retourner un html valide et appelez-la dans set_render_callback( )

Dans cette fonction, vous passerez en paramÚtre $block qui sera un array regroupant les paramÚtres de votre block. Les clés de ce tableau étant les identifiants unique de votre bloc Gutenberg.

https://youtu.be/_sp4uIwvRKg
Votre Block en action!

Aller plus loin avec Carbon Fields

Je ne peux pas terminer ce tutoriel sans vous prĂ©senter un peu mieux Carbon Fields car tant qu’a l’embarquer dans vos projets pour crĂ©er facilement des blocs Gutenberg, autant en tirer tout son potentiel.

Vous pourrez donc avec Carbon Fields crĂ©er des champs personnalisĂ©s pour tout les types de publications prĂ©sents sur votre site mais Ă©galement crĂ©er des pages d’options pour votre thĂšme ou vos extensions.

Si vous voulez voir ce que ca donne en live, je vous invite a installer et regarder mon extension WP GestSup Connector qui embarque Carbon Fields et avec lequel j’ai crĂ©Ă© un block Gutenberg mais Ă©galement la page d’option de l’extension.

Installer WordPress en 3 minutes !

On lit partout qu’il faut 5 minutes pour installer WordPress… et c’est FAUX ! On nous a menti! On peut l’installer beaucoup plus rapidement que ca…

La preuve en vidéo!

Installer WordPress multisite en 3 minutes

Ceux d’entre vous ayant dĂ©jĂ  installĂ© un multisite savent qu’aprĂšs avoir installĂ© WordPress, il faut rentrer des constantes dans le wp-config.php pour activer ce mode, se rendre dans le Back-Office, paramĂ©trer le reseau et revenir dans le wp-config.php pour y coller un pavĂ© de constantes ainsi que dans le .htaccess… bref largement plus qu’avec le script que je vous ai concoctĂ©!

Comment ca marche?

J’ai crĂ©Ă© un script bash qui, lorsque vous le lancer vous pose quelques questions.

Rien de mĂ©chant, ce sont les informations que vous rentreriez lors de la routine d’installation d’un WordPress via votre navigateur prĂ©fĂ©rĂ©.

Une fois que les rĂ©ponses sont enregistrĂ©es, le script lance l’installation et le multisite est prĂȘt … en 3 minutes!

Bien sur ce script, pour fonctionner aura besoin de wp-cli.

https://wp-cli.org

Je veux le super script de SĂ©b!

Oui ben il est dispo sur Github 😉

Publier son extension sur le dépot WordPress grùce aux GitHub Actions!

Cet article parlera surement aux dĂ©veloppeurs et dĂ©veloppeuses d’extension WordPress qui publient sur le dĂ©pĂŽt WordPress… et ceux qui n’y publient pas pour ne pas avoir Ă  utiliser SVN.

En effet SVN est en quelque sorte l’ancĂȘtre de GIT et de nos jours rare sont les dĂ©veloppeurs qui ne sont pas passer Ă  Git.

GitHub est un service hébergeant des dépÎts GIT que les dev affectionnent particuliÚrement et trÚs utilisé dans le monde Open-Source.

Il y a quelques semaines, GitHub a rendu public les Github actions.

OK mais qu’est ce que c’est Github actions?

En simple, c’est une solution permettant d’automatiser des taches lorsqu’une action intervient sur un dĂ©pĂŽt ou une branche d’un dĂ©pĂŽt (pull / push…)

C’est lĂ  que ça devient intĂ©ressant !

Auparavant, pour mon exemple personnel, je versionnais mon code sur GitHub puis je transférais a la main mes fichiers constituant mon extension WordPress sur le SVN de WordPress.org.

Ça fonctionne… mais c’est long et rĂ©barbatif!

Merci Pierre Lannoye !

Pierre est un dĂ©veloppeur WordPress français publiant une extension WordPress par jour… ou presque.

Il a crĂ©Ă© une action permettant de publier sur le repo WordPress lorsque l’on push sur une branche d’un repo Git, un Tag particulier.

Ce tag sera repris sur le dépÎt WordPress afin de publier la nouvelle version de votre travail.

On fait comment?

Je ne sais pas si c’est la maniĂšre de faire dans les rĂšgles de l’art comme on dit… mais c’est la maniĂšre que j’utilise… ce sera surement amĂ©liorĂ© avec le temps, l’expĂ©rience, toussa toussa.

Dans mon projet, je crée un dossier .github notez le point devant puis un sous-dossier workflows.

Créé dans ce dernier dossier un fichier nommé `main.yml`:

name: Deploy SimpleWall to WordPress.org
on:
  push:
    tags:
      - "*"
jobs:
  tag:
    name: New Release
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@master
      - name: WordPress Plugin Deploy
        uses: Pierre-Lannoy/wordpress-actions/dotorg-plugin-deploy@master
        env:
          GITHUB_TOKEN: ${{ secrets.TOKEN_GH }}
          SLUG: simple-wall
          SVN_PASSWORD: ${{ secrets.SVN_PASSWORD }}
          SVN_USERNAME: ${{ secrets.SVN_USERNAME }}

Committez, puis pushez ce fichier.

Paramétrage coté Github

Rendez-vous sur votre dĂ©pĂŽt Github, dans l’onglet « Actions » vous devriez retrouver l’action crĂ©Ă©e plus tĂŽt.

Github Actions

Nous avions utilisĂ© une variable SVN_PASSWORD et une SVN_USERNAME correspondant aux identifiant SVN nĂ©cessaire pour publier sur le repo WordPress. Il va falloir les transmettre a Github pour qu’il puisse se connecter de façon sĂ©curisĂ©e.

Rendez vous dans l’onglet « Settings »

Github Actions Settings

Cliquez sur « Add a new secret »

Github Actions Secret

Dans l’input « Name », saisissez le 1er nom de variable soit « SVN_PASSWORD » et le saisissez le mot de passe de votre compte wp.org dans le textarea « Value ».

Répétez en adaptant pour la variable correspondant à votre mot de passe.

Testez!

Si tout s’est bien passĂ©, la prochaine fois que vous crĂ©erez et pusherez un tag Git, votre extension sera automatiquement publiĂ©e sur le dĂ©pĂŽt Officiel WordPress.

Utiliser Lando pour développer ses projets WordPress en local

Je vous ai dĂ©jĂ  parlĂ© rapidement de Lando il y a quelques temps…. c’Ă©tait plus un cri du coeur d’avoir trouvĂ© une solution simple pour utiliser la technologie Docker.

Qu’est ce que Lando ?

Comme je vous expliquais dans mon article prĂ©cĂ©dent, Lando est une sur-couche permettant d’utiliser facilement la technologie Docker.

Pour faire simple, il faut voir Docker comme un outils modulaire ou chaque brique est le composant de votre serveur Web.
Vous aurez donc besoin par exemple, pour faire tourner un WordPress en local d’une brique Apache, d’une brique PHP et d’une brique Mariadb ou Mysql.
Parmi ces différentes briques, il y a des versions différentes. Par exemple PHP7.0 / PHP7.3 .
Pour dĂ©velopper sainement et Ă©viter les mauvaises surprises lors d’une mise en production, il peut ĂȘtre intĂ©ressant d’utiliser lors de nos dĂ©veloppements les mĂȘmes versions logiciels que celles utilisĂ©es par le serveur qui hĂ©bergera le site Web au final. Ainsi on rĂ©duit les risques de conflits et erreurs.

Le but de Docker est donc de fournir ces diffĂ©rentes briques et de les faire travailler ensemble… sauf que…

Sauf que, comme je le disais dans mon prĂ©cĂ©dent article, il faut paramĂ©trer tout ca… et avoir des connaissances sysadmin que nous n’avons pas tous… heureusement Lando est arrivĂ©

Installer Lando

Le plus dur dans l’installation de Lando est en fait l’installation de Docker qui est assez simple si vous ĂȘtes libre comme moi, c’est Ă  dire sur une distribution Linux. C’est un peu plus compliquĂ© si vous ĂȘtes prisonnier d’un systĂšme privateur tel Windows ou Mac OS. (Pour une fois qu’on a un truc plus simple sous Ubuntu Linux… )

Bref, Docker tourne nativement sous Linux, il faudra ajouter une machine virtuelle pour installer Docker sur Windows ou Mac OS.

Une fois Docker installé, rendez vous sur le site de Lando pour installer la sur-couche qui va mettre en musique tout ça.

Configurer Lando

Je vous disais plus haut que Lando faisait abstraction de la complexité de paramétrage de Docker.

Toute la configuration de votre serveur de développement va tenir en un fichier texte.

Imaginons que nous voulions créer un site WordPress avec pour url https://mon-super-site.lndo.site.

Il suffit de crĂ©er un dossier sur votre machine ou vous avez les droits d’Ă©criture et que vous nommeriez du nom que vous voulez: mon-super-site

Dans ce dossier on va ajouter un fichier .lando.yml qui va contenir toute la configuration du serveur de notre site:

C’est tout! Lando est prĂȘt Ă  fonctionner! et vous prĂȘt Ă  dĂ©velopper!

DĂ©corticons le .lando.yml:

  • Ligne 1: un nom pour votre environnement de dĂ©veloppement. Ce nom va servir notament Ă  la construction de l’url de votre projet.
  • Ligne 2: « Recipe » signifie recette en anglais. Lando a mis au point des prĂ©configuration selon ce que vous aller faire avec. Ici c’est une recette WordPress, elle installera notament wp-cli. Il en existe pour Pantheon, Drupal et bien plus => Lando Recipe
  • Ligne 3: un block config ou vous pouvez spĂ©cifiez vos versions logiciel
  • Ligne 7: un block Service ou l’on va lister les services que l’on veut voir fonctionner. ici PhpMyadmin et Mailhog
  • Ligne 16: Composer c’est quand meme pratique quand on travaille dans l’univers PHP.
  • Ligne 19: ce block est facultatif si vous travailler sur un domaine simple. Il peut se rĂ©vĂ©ler trĂšs pratique dans le cadre d’un WordPress Multisite en sous-domaine par exemple.
  • Ligne 22: peut etre la partie la plus sympa… effectuer des taches juste aprĂšs l’import d’une base de donnĂ©e… ici on effectue via wp-cli un search & replace pour adapter les url et on dĂ©sactive l’excellente extension WordPress WP-Rocket car le cache en dev… comment dire 😉

Ce .lando.yml est assez simple et il existe une multitude d’autre configuration et possibilitĂ© pour coller au mieux a vos besoin.

Notez que Lando est orienté pour le développement et fortement déconseillé par ses développeur pour une production

Pour lancer une premiĂšre fois Lando, il convient de faire un `lando rebuild –y`.

A ce moment, il va crĂ©er et tĂ©lĂ©charger ce dont il a besoin. Cette Ă©tape peut ĂȘtre longue selon votre connexion web mais elle ne se fera qu’une fois…

Ensuite pour les prochains lancements un `lando start` dans votre terminal positionné dans votre dossier de travail suffira.

Attention la recette WordPress prĂ©pare lando techniquement a recevoir WordPress mais n’installe pas WordPress. Vous effectuerez cette Ă©tape d’installation comme vous en avez l’habitude ou bien en utilisant ma mĂ©thode wp-cli.

J’utilise Local By Flywheel… ca fait pareil!

Hummm chaque solution Ă  ses avantages et ses inconvĂ©nients. Lorsque j’ai dĂ©cidĂ© de tester et finalement d’adopter Lando, Local By Flywheel n’Ă©tait pas disponible sous Linux. Ce n’est plus le cas depuis l’Ă©tĂ© 2019.

J’ai testĂ© (trop) rapidement Local By Flywheel et je n’ai pas rĂ©ussi a faire fonctionner un WP :-/ (notez le trop).

La seule chose que Flywheel apporte pour mon cas est une GUI (Graphical User Interface) alors que Lando… c’est en ligne de commande… mais sincĂšrement pour faire lando start ou `lando rebuild –y` ? installer une interface qui va forcĂ©ment utiliser des ressources machine… je n’en ai pas vu l’utilitĂ©.

GĂ©ocoder une adresse sans utiliser Google Maps

On a Ă©tĂ© longtemps habituĂ© a utiliser les outils et services de Google pour faire tout un tas de chose… seulement les bonne choses ont une fin et certains de ces services ferment ou deviennent payant.

Dans le cadre du dĂ©veloppement de mon extension OpenAgenda pour WordPress, j’ai besoin de trouver la longitude et la latitude d’une adresse d’un Ă©vĂšnement.

OpenStreetMap Ă  la rescousse

Il existe heureusement beaucoup de services permettant de remplacer ceux de Google. Parmi eux OpenStreetMap (OSM) pour tout ce qui tourne autour des cartes et la géolocalisation.

Nominatim pour la conversion d’adresse en donnĂ©e de localisation.

J’ai donc dĂ©couvert le service Nominatim.

C’est bien gentils, mais je veux du code!

Si comme moi, vous avez besoin de rĂ©cupĂ©rer la latitude et la longitude d’un point gĂ©ographique en PHP… pour WordPress, voici ce que je fais:

function get_lat_lng( $address ) {
	$address = rawurlencode( $address );
	$coord   = get_transient( 'geocode_' . $address );
	if ( empty( $coord ) ) {
		$url = 'http://nominatim.openstreetmap.org/?format=json&addressdetails=1&q=' . $address . '&format=json&limit=1';
		$json = wp_remote_get( $url );
        if( 200 === (int) wp_remote_retrieve_response_code( $json ) ){
            $body = wp_remote_retrieve_body( $json );
            $json = json_decode( $body, true );
        }
        $coord['lat'] = $json[0]['lat'];
        $coord['long'] = $json[0]['lon'];
        set_transient( 'geocode_' . $address, $coord, DAY_IN_SECONDS * 90 );
    }

	return $coord;
}

Un peu d’explications:

Ligne 1: on déclare une fonction dans laquelle je passe en parametre une adresse (rue code postal ville).

Ligne 2: j’encode cette adresse pour qu’elle soit intĂ©grable dans une URL.

Ligne 3: je vĂ©rifie si un transient avec les coordonnĂ©es existe. Nominatim limite l’accĂšs a son PAI… le transient permets donc de stocker les infos en locale et de ne pas faire une requete a chaque affichage… surtout que les coordonnĂ©es gĂ©ographique d’un point ne devrait pas changer trop souvent…

Ligne 14: je crĂ©e le transient qui sera valable 90 jours. En gros, votre WordPress ne demandera la gĂ©olocalisation qu’une fois tous les 90 jours pour une mĂȘme adresse.

Entre 2 : si l’adresse n’a jamais Ă©tĂ© gĂ©ocodĂ©e alors je fais la demande a l’API de Nominatim

Des idées ou amélioration a apporter ? Laissez moi un commentaire!

Lutter contre les GAFAM… c’est pas facile

État des lieux

Jusqu’Ă  peu de temps, j’Ă©tais ce qu’on peut appeler un pur produit Google… visitant les sites web avec Google Chrome, disposant de plusieurs compte Gmail personnel et un GSuite pour mon mail pro. J’avais Ă©galement des Drive synchronisĂ©s… et un mobile Android ! Bref… il savait tout et je m’en souciais guĂšre
 vous savez « J’ai rien Ă  cacher… »

Il faut que ça cesse !

Cet Ă©tĂ© 2019 a marquĂ© le pas d’un changement d’idĂ©es! y’a que les imbĂ©ciles… tout ça vous voyez…

  1. J’ai commencĂ© Ă  boycotter Amazon… au profit de sites europĂ©ens ou français de e-commerce… quand le gĂ©ant amĂ©ricain a dĂ©cidĂ© de reporter la taxe sur les commerçants français utilisant la plateforme…
  2. je voulais diminuer l’utilisation de produits Google Ă  commencer par mes mails persos et pro afin de remplacer les @gmail.com par des domaines personnalisĂ©s…

Faisons confiance au produits et startup françaises!

Cocorico!!! la France dispose d’une startup qui fait de la dĂ©googlisation son cheval de bataille, j’ai nommĂ© mailo.com.

Sur Twitter, @hellomailo est trĂšs actif sur le mal que reprĂ©sente Google… j’ai cĂ©dĂ© aux sirĂšnes… d’autant qu’ils ont une offre famille plutot sympa (sur le papier en tout cas).

En quoi consiste l’offre Famille de mailo?

En gros, ils proposent de sĂ©curiser les compte mails de vos enfants en filtrant les correspondants via une approbation de l’adresse par le ou les parents…

ConcrĂštement, si un correspondant ne figure pas dans le carnet d’adresse de votre enfant, le mail est dirigĂ© dans vos Spams (deja ça commence a craindre) pour une validation… si vous validez… votre enfant reçoit le mail… ( mais l’adresse ne s’ajoute pas au carnet d’adresse => pas trĂšs logique selon moi )

Si votre enfant ajoute un contact dans son carnet d’adresse, il ne pourra lui envoyer un mail que lorsque vous aurez validĂ© le contact (ça c’est bien… il faut le dire aussi!)

Bref, tout n’est pas au point mais l’offre est jeune et sera donc (j’espĂšre) amĂ©liorĂ©e.

Alors? qu’est ce qui ne te va pas?

Ben ce qui ne me va pas, c’est que certes l’offre est jeune mais un support client (car j’ai payĂ© un abonnement) correcte devrait suivre… et ce n’est pas le cas.

Mes enfants synchronisent leur mail sur Thunderbird. Comme les contacts doivent ĂȘtre validĂ©s par moi mĂȘme, qu’ils sont alors ajoutĂ© sur le carnet d’adresse en ligne… ils devraient ĂȘtre synchronisable via Carddav comme mon compte adulte… ce qui n’est pas le cas… ou bien j’ai pas compris…

Si t’as pas compris… c’est pas la faute de Mailo!

C’est vrai… mais si moi, professionnel du web, je n’ai pas compris… quid de Mme Michu ?

Et quand bien mĂȘme… j’envoie des mails sur plusieurs adresses trouvĂ©es sur leur site… pas de rĂ©ponses. Je manque pas une occasion de les interpeller sur Twitter ou ils sont actif… et je n’ai pas de retour…

Et ton mail pro, t’en es ou ?

Pour gĂ©rer les mails @thivinfo.com, j’Ă©tais chez G Suite (vous avez notĂ© le temps employĂ©?) et je ne suis pas chez Mailo… voyant le peu de rĂ©action sur la partie privĂ©e, je me suis dit que ce n’étais pas une bonne idĂ©e de leur confier un des moyens de communication les plus utilisĂ©s dans le monde professionnel…

Pour mes mail Pro, j’ai fais confiance Ă  l’hĂ©bergeur suisse Infomaniak et son offre d’hĂ©bergement mail pour 1.5€/mois. Et je dois dire que je suis plutot satisfait.

  • le service fonctionne correctement (Mail /contact / calendrier synchronisĂ© sur Thunderbird et smartphone Android).
  • le support en cas de question est trĂšs rĂ©actif, joignable par mail, tĂ©lĂ©phone et discussion instantanĂ©e selon l’heure et le jour…

Courage… fuyons

Vous l’aurez compris, je ne vais pas faire de vieux os chez Mailo.com et certainement migrer tout le monde chez Infomaniak.

Seul bĂ©mol, Infomaniak ne propose pas de solution de filtrage comme le propose Mailo pour les enfants…

Thivinfo présente un nouveau service: paroisse-catholique.fr

Aujourd’hui, je souhaite partager un nouveau projet qui pourra rendre de nombreux services je l’espĂšre Ă  certains d’entre vous.

Il Ă©tait une fois 5p2p

J’ai travaillĂ© un peu plus de 2 ans pour l’association 5 Pains et 2 Poissons qui avait pour but de faciliter le numĂ©rique auprĂšs des associations ecclĂ©siastiques.

En tant que dĂ©veloppeur WordPress, je produisais des sites web pour des institutions et congrĂ©gations religieuses. Cette expĂ©rience m’a permis de dĂ©couvrir un monde qui a besoin de communiquer et de façon efficace… mais qui n’en a pas les moyens.

WordPress au service de l’Église Catholique!

A la fin de cette expĂ©rience, l’idĂ©e m’est venu de crĂ©er un service permettant aux paroisses n’ayant pas trop de revenu d’accĂ©der Ă  un service web de qualitĂ© rĂ©pondant aux standards du web d’aujourd’hui.

Et c’est ainsi qu’est nĂ© paroisse-catholique.fr !

Que propose Paroisse-catholique.fr?

Paroisse-catholique.fr propose une solution clĂ© en main qui vous permettra de crĂ©er vous mĂȘme sans connaissance technique le site qui ressemble Ă  votre paroisse.

  • Publiez facilement de l’actualitĂ© a destination de vos paroissiens
  • Programmez vos Ă©vĂšnements paroissiaux et locaux
  • libĂ©rez vous des contraintes, ne gĂ©rez que la communication de votre paroisses facilement.
  • Permettez a vos paroissiens de vous contacter facilement
  • Mettez facilement en place des campagnes de dons (denier du culte, donations…)

Quels sont les domaines disponible?

Pour le moment vous pourrez obtenir dans le cadre de votre abonnement un sous-domaine de l’un des domaines suivant:

  • paroisse-catholique.fr
  • paroisse-catholique.org
  • paroisse-catholique.net
  • paroisse-catholique.info
  • paroissial.fr
  • ma-paroisse.org
  • ma-paroisse.fr
  • votre domaine personnalisĂ©…

[video] Contribuer au Projet WordPress quand on est pas dĂ©veloppeur: c’est possible!

La vidéo de ma conférence sur la contribution au projet WordPress lors du WordCamp Bordeaux 2019 est disponible. Bon visionnage.

Voir les slides

WordCamp Bordeaux 2019

Installer les WordPress Coding Standards sur PHPStorm facilement

WordPress, comme tous les framework de dĂ©veloppement dispose de ses propres rĂšgles Ă  suivre pour que chacun des dĂ©veloppeurs puissent lire et comprendre facilement le code d’un confrĂšre.

C’est ce qu’on appelle les « Codings Standards » soit en français les standards de codage. Pour WordPress, nous avons les WordPress Codings Standards plus connu sous le joli nom de WPCS!

Ces rÚgles de développement sont lisible ici: Découvrir les WordPress Codings Standards

OK, on a ouate mille page de docs… mais je vais pas lire toutes ces docs tout en dĂ©veloppant… t’as pas plus simple?

Et ben vous avez de la chance puisque nous pouvons intégrer ces rÚgles directement dans nos IDE ou éditeurs de texte! Ainsi votre code sera vérifié automatiquement lors de vos développement.

J’utilise quotidiennement PHPStorm de Jetbrains mais sachez que ces rĂšgles sont utilisable sur quasiment tous les Ă©diteurs de codes.

Ou trouver les WPCS?

Les WPCS sont disponible sur Github. Je vais vous dĂ©tailler comment moi je fais, mais vous pouvez lire en anglais qu’il y a plusieurs mĂ©thodes. Faites votre choix!

La méthode de Séb pour installer les WPCS

Alors ce n’est pas Ă  proprement dit ma mĂ©thode… dans le sens ce n’est pas moi qui l’est mis au point… mais c’est celle que j’utilise et que je vais dĂ©tailler!

Avant d’installer les WPCS, il faut un installer les PHPCS… et oui, WordPress est dĂ©veloppĂ© en PHP et pour faire simple, WPCS rajoute des rĂšgles ou modifie un peu les rĂšgles des PHP Codings Standards.

Retenez que, comme dans tous l’Ă©cosystĂšme WordPress, le but est de rendre accessible et faciliter l’accĂšs au dĂ©veloppement.

Installer les PHPCS

 

Personnellement, j’ai une partition sur mon Ubuntu Linux dĂ©diĂ©e Ă  mes projets et a cotĂ© des projets, j’ai un dossier avec les WPCS et un avec les PHPCS

Les PHPCS sont Ă©galement disponible sur Github

Cloner le dépÎt Github des PHPCS

Rendez vous a l’endroit oĂč vous voulez tĂ©lĂ©charger les rĂšgles puis:

ou

Si vous n’avez pas renseignĂ© de clĂ© SSH sur votre compte GitHub.

Vous devriez normalement avoir maintenant un dossier nommé phpcs.

Cloner le dépÎt Github des WPCS

On va réaliser quasiment la meme commande pour cloner le dépot des WPCS cette fois ci:

ou

Je vous rassure, le plus dur est fait…

Paramétrer PHPStorm

Rendez vous dans « File | Settings | Languages & Frameworks | PHP | Quality Tools »

Panneau de réglages PHPStorm

En cliquant sur les 3 point à droite de Configuration vous pourrez spécifier le chemin vers les PHPCS. Il faudra naviguer et sélectionner le fichier « phpcs » présent dans le répertoire « phpcs/bin » obtenu grace au clonage précédant.

Si tout est OK, en bas de la fenĂȘtre affichera la version de Code Sniffer installĂ©e.

Passons Ă  WPCS, car aprĂšs tout… ce sont pour eux qu’on en est lĂ  !

Le chemin vers les réglages est File | Settings | Editor | Inspections

J’aime les flĂšches!

le but ici est d’arriver au menu « PHP Code Sniffer Validation » afin de cocher « Installed Standard Paths » et de chercher aprĂšs avoir cliquĂ© sur le dossier Ă  droite le rĂ©pertoire rĂ©cĂ©dement cloner avec les WPCS.

Si tout se passe bien…en cliquant sur les 2 flĂšches circulaires, vous devriez avoir le choix de plusieurs WPCS… personnellement, je choisis WordPress-Extra. puis on valide en cliquant sur OK…

Contribuer au Projet WordPress quand on est pas dĂ©veloppeur: c’est possible!

Contribuer au projet WordPress? moi? mais je ne suis pas développeur!

Cette phrase nous l’avons tous entendu… et c’est elle qui m’a donnĂ© envie de donner cette confĂ©rence au WordCamp Bordeaux 2019.

Des dĂ©veloppeurs qui contribuent… l’écosystĂšme WordPress en regorge… par contre des utilisateurs finaux, non dĂ©veloppeurs, qui contribuent… alors lĂ  il y en a beaucoup moins.

Le but de cette confĂ©rence est de faire un tour d’horizon des divers univers de contribution possible lorsque nous ne sommes pas dĂ©veloppeur.

  • AccessibilitĂ©
  • Core
  • Polyglotte
  • Support
  • wp.tv

Sont quelques uns des univers qu’on Ă©voquera!

Les Slides

Voir la vidéo

En Mars, Direction le WordCamp Bordeaux

Il y a des Ă©tapes comme celle-ci qu’il ne faut pas rater! Il s’agit du WordCamp Bordeaux qui aura lieu le 23 mars 2019.

Qu’est ce qu’un WordCamp ?

Un WordCamp est une manifestation réunissant des utilisateurs de WordPress.
Ces utilisateurs peuvent aussi bien ĂȘtre utilisateurs, dĂ©veloppeurs, intĂ©grateurs, designer, marketeurs ou tout autre mĂ©tier ayant un rĂŽle dans WordPress.

On y fait quoi?

Un WordCamp est une journĂ©e de confĂ©rences dĂ©diĂ©es Ă  WordPress articulĂ©e autour d’une After Party!

SĂ©bastien Serre

Ca, c’est le rĂ©sumĂ© 😉

Pour le WordCamp Bordeaux millésime 2019, ce seront pas moins de 16 conférences réparties sur 2 salles auxquelles vous pourrez assister.

Regardez plutĂŽt le programme!

Mettez vous au vert, venez au WordCamp Bordeaux!

2 Raisons:

  • Il reste des places! dĂ©pĂȘchez vous de prendre votre billet pour nous rejoindre.
  • L’Ă©quipe du WordCamp Bordeaux organise un Ă©vĂšnement Ă©co-responsable… c’est la premiĂšre fois pour un WordCamp français!

Pour en savoir plus je vous invite Ă  lire l’article d’AurĂ©lien Denis, co-organisateur de cet Ă©vĂšnement:

J’y serais pour parler de contribution!

Comme au dernier WordCamp Nice je serais prĂ©sent au WordCamp Bordeaux en tant qu’orateur afin de partager mon expĂ©rience de contributeur au projet WordPress.

Comme au dernier WordCamp Nice je serais prĂ©sent au WordCamp Bordeaux en tant qu’orateur afin de partager mon expĂ©rience de contributeur au projet WordPress.

Souvent l’excuse (Ă  2 balles) pour ne pas contribuer c’est : Je ne suis pas dĂ©veloppeur! Je ne peux pas contribuer… c’est faux!

Ma bafouille tentera de faire sauter le pas de la contribution aux non dĂ©veloppeurs… en Ă©voquant les divers univers oĂč il est possible pour eux de contribuer.

RDV le 23 Mars 2019 à 7h45 à la cité Mondiale de Bordeaux !

Migrer un site d’un multisite vers une installation classique

Présentation du multisite WordPress.

La technique du Multisite permet de faire fonctionner plusieurs site WordPress ensemble au sein d’une seule et mĂȘme installation.

Cette technique permet de mutualiser le Coeur de WordPress, les thĂšmes ainsi que les extensions.

En rĂ©sulte un gain de temps non nĂ©gligeable lors de la maintenance de vos sites puisque vous ne mettez Ă  jour qu’une seule fois.

En savoir plus:

Extraire un site d’un multisite Ă©tape par Ă©tape.

Tout d’abord, ce tutoriel ne se veut pas LA mĂ©thode mais une mĂ©thode qui fonctionne et que j’ai mis en action aujourd’hui dans le cadre de mon poste de dĂ©veloppeur WordPress.

Étape -1 – Sauvegarde

Saaaaauuuuuvvvvvveeeeegggggaaaaaarrrrrrdddddeeeeee

Sauvegardez vos fichiers (WP, extensions, thÚmes, mu-plugins et base de données Mysql)

Étape 0 – Installation en local

Avoir le multisite en local, ce sera bien plus simple Ă  gĂ©rer et en cas d’accident, ca ne gĂ©nera que vous!

Étape 1 – Mises Ă  jour

La premiĂšre Ă©tape va consister a mettre votre multisite Ă  jour:

  • WordPress
  • ThĂšmes
  • Extensions
  • Langues

Si cette Ă©tape n’est pas fondamentale, je me dis que:

  1. ça ne peut pas faire de mal
  2. ça peut éviter les conflits et les soucis par la suite quand vous importerez thÚmes et extension dans votre site WordPress « Classique ».

Étape 2 – Installer WordPress

Installer un WordPress tout beau tout neuf… Pour cela je vous propose de le faire en 3 minutes grĂące au script wp-cli que j’ai crĂ©Ă© pour vous…

OK j’avoue, je l’ai crĂ©Ă© pour moi… et je me suis dit que ça pourrait vous intĂ©resser!

Étape 3 – TransfĂ©rer les fichiers

Alors maintenant, va commencer un transfert de fichiers. VoilĂ  pourquoi je vous ai demandĂ© en Ă©tape 0 de travailler en local. e sera bien plus facile de dĂ©placer des fichiers dans l’explorateur de votre machine qu’Ă  distance via un sFTP ou autre.

Pensez à transférer:

  • Les thĂšmes (parent et enfants)
  • Les extensions
  • Les « mu-plugins »
  • le dossier « uploads »… mais lui je lui rĂ©serve l’Ă©tape 4!

Bien sur, sur le multisite peut ĂȘtre que toutes les extensions ou tous les thĂšmes n’Ă©taient pas utiles pour le site que vous ĂȘtes en train d’extraire.

Ne transfĂ©rez que ce dont vous avez besoin et n’activez rien

Étape 4 – le dossier « Uploads »

Le dossier Upload situé dans `wp-content` contient tous les médias téléversés sur votre site et disponible dans la médiathÚque.

Avouez que ce serait ballot de ne pas les retrouver dans votre nouvelle installation.

Le dossier Upload est un peu diffĂ©rent Ă  transfĂ©rer puisque son architecture de dossiers et de sous-dossier est diffĂ©rent d’une installation classique.

Architecture du dossier Uploads en Multitisite
Architecture du dossier Uploads en Multitisite

Remarquez la diffĂ©rence avec une architecture classique. Dans « uploads », nous avons un dossier « sites » qui n’existe pas dans une installation classique de WordPress.

A l’intĂ©rieur de ce dossier « sites » nous avons un dossier nommĂ© par l’id du site dans l’infrastructure multisite.

Ensuite, nous retrouvons le classement classique des médias par WordPress avec un dossier année et un dossier mois.

Retrouvez l’ID du site a extraire du multisite

J’estime que si vous faites cette manipulation alors vous avez les privilĂšges de super-administrateur.

Cette Ă©tape est assez simple, il faut se rendre dans l’administration rĂ©seau de votre multisite puis dans le sous-menu « Sites » au bout de la ligne concernant le site Ă  migrer vous trouverez l’ID de celui-ci.

Trouvez l'ID du site Ă  migrer
Trouvez l’ID du site Ă  migrer

L’identifiant rĂ©cupĂ©rĂ© vous pouvez dĂ©placer tout le contenu du dossier ayant l’id comme nom dans wp-content/uploads afin de retrouver l’arborescence classique d’un WP.

Étape 5 – exporter puis importer la base de donnĂ©es

C’est bien beau mais pour le moment, vous avez tout sauf votre contenu…. et dans un site, c’est bien le plus important la base de donnĂ©es.

Pour ce tutoriel, je vais estimer que vous avez le préfixe par défaut « wp_ ».

A l’image des mĂ©dias, WordPress multisite ajoute l’id du site sur certaines tables.

Il va donc falloir exporter toutes les tables ayant l’ID ainsi que les tables wp_user et wp_usermeta qui elles n’ont pas d’id car dans un multisite, les utilisateurs sont commun Ă  tous les sites.

Personnellement je le fais avec PHPmyAdmin si les tables ne sont pas trop volumineuses… on sĂ©lectionne les tables voulues (exemple: celle du site « 4 » wp_4_ ainsi que les 2 tables d’utilisateurs).

Avant d’importer, supprimez les tables wp_user et `wp_usermeta` de l’installation classique afin d’éviter les conflits avec les tables que vous allez importer.

Pour l’import dans le WP classique, utilisez Ă©galement l’outils dont vous avez l’habitude.

Vous allez vous retrouver avec des tables en doublons: Celles de votre installation classique et celle que vous venez d’importer qui ont le prĂ©fixe `wp_4_`. Supprimez les tables en doublons de l’installation classique.

Importez vos tables « multisites »

A cette Ă©tape, si vous regardez votre base de donnĂ©es dans PHPmyadmin ou autres, vous devez remarquer des tables en wp_ et d’autres en wp_4_

Dans PhpMyadmin, cochez toutes les tables en `wp_4_` puis en bas de la page dans le menu déroulant sélectionnez « Remplacez le préfixe de table »

Si vous dĂ©cidez de modifier le prĂ©fixe de table, n’oubliez pas de corriger le `wp-config.php` en consĂ©quence.

On y est presque!

Étape 6 – Remplacer les URLs des mĂ©dias en Base de donnĂ©es.

Pour cela j’utilise le script SRDB d’Interconnectit. Vous trouverez un guide de ce script chez mon ami GrĂ©goire Noyelle.

Ici nous allons modifier les urls vers les medias et donc faire un recherche et remplace qui ressemblerait à ça:

Search: https://example.com/wp-content/uploads/site/4/2019/02/mon-image.jpg

Replace: https://example.com/wp-content/uploads/2019/02/mon-image.jpg

Étape 7 – la base utilisateur

Lors de l’import de la base de donnĂ©es, nous avons importĂ© tous les utilisateurs du multisite… or, il y en a qui n’ont aucun rapport avec le site que vous venez d’extraire.

Je n’ai malheureusement pas encore trouvĂ© une requĂȘte sql qui va bien … si vous avez une idĂ©e, soumettez la moi en commentaire, c’est avec joie que j’amĂ©liorerais ce tutoriel.

Étape 8 – VĂ©rifications

Normalement, votre site classique est une copie exacte de votre site lorsqu’il Ă©tait dans le multisite.

Selon vos installations, il peut y avoir 2/3 choses Ă  rĂ©gulariser. Exemple, remplacer des urls vers des images Ă©crites en dur dans des fichiers css crĂ©Ă© parle constructeur de page Elementor…

Vous avez peut ĂȘtre transfĂ©rer des extensions qui n’ont un intĂ©rĂȘt que dans le cadre d’un multisite…

Étape 10 – Se reposer!

Ouais y’a pas d’Ă©tape 9 car ça fait bien de s’arrĂȘter sur un chiffre rond! une dizaine tout ça!

Normalement vous venez d’extraire sans encombre un site d’un multisite vers un site classique WordPress… vous avez bien mĂ©ritĂ© une petite mousse, un cafĂ© ou n’importe qu’elle autre chose qui vous fera plaisir!

Et sinon, il y a la méthode simple! (ajout du 20 avril 2019)

Si comme moi vous ĂȘtes adepte de WP-CLI alors ce script vous permettra d’extraire un site du multisite en quelques secondes…

trepmal/blog-extractor

WP-CLI command. Extract single blog from multisite – trepmal/blog-extractor

https://github.com/trepmal/blog-extractor