htmlcss.fr Des tutos ou tutoriels Wordpress, html, php ou javascript.

ACF read only

A

Parfois, dans le fonctionnement de certains sites; on a besoin de faire apparaître des champs dans l’administration qui ne doivent pas être modifié par l’utilisateur. La lecture seul.
J’ai eu un bon exemple récemment lors de la refonte d’un site. Ce site propose plusieurs types de formations. Et la nouvelle version ne propose pas de page dédiée pour certaines formations. Et donc…

    'public' => false, //<-- arg du custom post type

Mais les admins du site communiquent beaucoup et ont quand même besoin d’une URL qui donne un accès direct au contenu souhaité.

Nous avons donc mis en place du coté front, via javascript, une URL avec des ancres qui permet d’afficher directement le contenu. Il me restait donc à générer cette URL coté BO. Et j’avais pas vraiment envie qu’un utilisateur viennent y mettre n’importe quoi…
J’ai donc mis en place une petite fonction qui me permet de remplir ce champs lors de la sauvegarde du post via acf/save_post.
Il me fallait donc de la lecture seul coté BO sur la page d’un post.

ACF propose cette option via le filtre acf/load_field.
Mais ce n’est pas spécifié explicitement dans la doc…
Il nous suffi donc de modifier la propriété « disabled » d’un champs spécifique, (normalement le code n’est à exécuter qu’une fois).

function disable_acf_load_field( $field ) {
  $field['disabled'] = 1;
  return $field;
}
add_filter('acf/load_field/name=formation_permalink', 'disable_acf_load_field');

Je vous invite à consulter la liste des modifiers de ce filtre pour pouvoir cibler spécifiquement vos champs.

Et voilà, vous avez un champs en lecture seul et sélectionnable à la souris.

htmlcss.fr Des tutos ou tutoriels Wordpress, html, php ou javascript.

François Riant

Je m’appelle François Riant. Je travail dans les métiers du web depuis 2006. Mon expérience m’a amené à changer plusieurs fois de technologie.

Aujourd’hui je cherche à partager mon expérience et j’y trouve du de plaisir. Je travail actuellement chez W2P Digital.
Je ne prends donc pas de mission en freelance.

Si vous avez une remarque ou une question; vous pouvez me joindre sur francois.riant@gmail.com