Désactiver les champs personnalisés de WordPress
Cette astuce permet de désactiver les champs personnalités des articles, des pages.
Les champs personnalisés sur WordPress permettent d’ajouter des informations complémentaires à un article ou une page. Pour récupérer et afficher la valeur d’un champ personnalisé, vous devez utiliser la fonction get_post_meta().
Dans certains cas, vous n’avez pas besoin de ces champs personnalisés. Il serait judicieux de les désactiver pour éviter à vos rédacteurs ou votre client d’ajouter des champs personnalisés inutiles..
Copier le code ci-dessous dans le fichier functions.php
de votre thème pour désactiver les champs personnalisés :
[pastacode lang=”php” message=”” highlight=”” provider=”manual”]
function baw_remove_custom_field_meta_boxes() {
remove_post_type_support( 'post','custom-fields' );
remove_post_type_support( 'page','custom-fields' );
}
add_action('init','baw_remove_custom_field_meta_boxes');
[/pastacode]
4 Commentaires
Bonjour !
Cette astuce ne désactive pas les champs personnalisés comme
indiqué, elle ne fait “que” empêcher les metabox des custom fields de s’afficher.
Il vaudrait mieux les supprimer “vraiment” avec remove_post_type_support().
Code php à coller dans functions.php:
Aussi ce code ne les désactive que pour post et page, pas pour vos types de posts persos.
J’ai hésité entre les deux techniques, mais au risque de jouer avec les mots, le fait de ne plus pouvoir en ajouter, on peut dire que la fonction est “désactivé” ? =D
Ne pas afficher != Désactiver.
Dans ce cas là, autant ne rien mettre et décocher la box “Custom fields” dans les “options d’écran” dans le menu du haut. La box disparait, le fonctione est-elle désactivée ?
Ton code empêche les box de s’écrire dans la page, mais le post supoprte-t-il les custom fields encore ou pas ?
Si oui, alors on peut en ajouter.
“Quand tu fermes les yeux, les choses existent encore”, c’est pareil, il ne suffit pas de cacher pour désactiver.
D’ailleurs, cette façon de coder mène à des failles.
Exemple :
page.php et page-admin.php
les 2 pages existent
Pour empecher les visiteurs d’aller sur ma page admn, je ne mets pas de lien vers la page admin. La page admin est-elle restreinte aux visiteurs ? non
Ou aussi je fais un lien sans texte ou un display:none, la page est-elle cachée ? non plus ;)
Il faut donc bien différencier cacher|ne pas afficher et désactiver réellement, c’est à dire, supprime la fonction/callback de traitement de données envoyées.
Je pense meme que tu peux faire le test suivant :
1) ne mets pas ton code
2) ouvre 2 oglets en edition sur un article
3) mets ton code
4) refresh l’onglet N°2
4.5) la box a disparu
5) retourne que l’onglet n°1 (ne refresh pas !)
6) Ajoute un custom field.
7) ton champ est ajouté …
Et un hacker saura rajouter un champ sans faire tout ça ;) compte sur moi :p
Je viens de fouiller le core et, oui le code fourni fait la m^m chose que le mien.
MAIS, car il y a un MAIS tout de même.
Imaginons que je fasse un plugin qui touche aux posts qui supportent les customs fields et dans mon plugin on peut en ajouter… Retirer la box ne retire pas le support !
ps : et mon “truc” du double onglet n’est pas un bon, oui ça fonctionne, mais grace aux nonces qu’on a gardé, une fois les nonces disparus, on ne peut pas les deviner (c’est le but des nonces) ^^