WordPress: ACF read only

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.

Articles similaires

Commencez à saisir votre recherche ci-dessus et pressez Entrée pour rechercher. ESC pour annuler.

Retour en haut