Créateur de thèmes WordPress :: Formateur :: Web Designer

WordPress :: Comment forcer l’activation d’Advanced Custom Fields (ACF)

Publié le : 

Modifié le : 

Par : 

Dans ce tutoriel nous verrons comment rendre obligatoire l’extension Advanced Custom Fields (ACF) dans votre installation WordPress.

Pourquoi ajouter cette fonction

Suite à une remarque et un extrait de code de Maxime Culea sur l’article de Maxime BJ sur ACF, j’ai eu envie d’envie de faire ce tutoriel.

Pour résumer, il s’agit de faire en sorte que l’extension Advanced Custom Fields (ACF) soit toujours active sur le site qui en dépend. En effet, l’extension utilise des fonctions PHP spécifiques et si vous les appelez dans votre thème pour afficher les contenus ACF, vous aurez une fatal error si ces fonctions ne sont pas disponibles. Cela se traduira par une page blanche ou une grosse notification toute moche.

Installation de la fonction

La fonction doit être ajoutée dans le fichier functions.php de votre thème. Attention à ne pas mettre l’ouverture PHP au début.

https://gist.github.com/gregoirenoyelle/beff0f3733ac06ce326cfca04050450c

Si le code ne s’affichait pas, le voir en ligne.

Voici le détail de la fonction:

  • Une condition générale vérifie si la fonction ACF get_field n’existe pas. Si c’est le cas, les hooks sont appelés, car ces fonctions ne sont pas déclarées par ACF.
  • Le premier hook WordPress est fait sur admin_notices . Il permet d’afficher un message dans le back-office. Ce sont les classes error qui permettent de donner la couleur.
  • Le deuxième hook est fait sur template_redirect. On va appeler la fonction WordPress wp_die qui affiche une page d’erreur et arrête tout affichage du site en remplaçant par une zone de texte.
  • Dans les deux hooks, la chaîne de caractère dans la fonction sprintf est bien sûr éditable. Attention à bien mettre les caractères d’échappement \ (Maj + Alt + / sur Mac) devant les apostrophes.

Résultat de la fonction

La fonction se déclenchera dès qu’ACF est désactivé.

Notification dans le back-office WordPress

Une notice apparaît immédiatement dans votre back-office, dans toutes les pages. Ici dans la page des extensions.

Notification en back quand Advanced Custom Fields a été désactivé dans WordPress

Et là dans le Tableau de bord.

Notification en back-office quand Advanced Custom Fields n'est pas actif dans WordPress

Notification sur le front-office

Votre site ne sera plus accessible en front-office et une notification indiquera la raison tout en proposant de se connecter au back-office pour activer ACF.

Notification en front quand Advanced Custom Fields n'est pas actif dans WordPress

Autre méthode plus radicale

Proposée par mon ami Thierry Pigot avec un MU plugin qui doit être placé dans un dossier mu-plugins à la racine du dossier wp-content. Attention dans ce cas, ce Mu plugin est activé automatiquement.

https://twitter.com/thierrypigot/status/738662089615638529

Voici son code:

[gist id=a07448abe1332e3c9d7c711cd28b2cd6 file=acf-missing.php]

2 réponses

  1. Super mix de tips, c’est un bon résumé de plusieurs bonne pratiques !

    Heureusement que tu es là pour mettre sur le papier les discussions d’à droite et d’à gauche 😉

    Merci et bonne continuation 😀

    1. Merci à toi Maxime. C’est ton commentaire qui m’a inspiré