Suppression des méta-boîtes: remove-meta_box () ou unset ()?
1 réponses
- votes
En cas de doute,utilisez l'API.
Supposons que la structure de $wp_meta_boxes
changera ou disparaîtra unjour.
remove_meta_box()
fonctionneratoujours,car l'APIest un contratentre lenoyauet les développeurs. La désactivation de certaines clés dans une variableglobalepeut casser.
unset()
estplusfacile à écrire lorsque vous souhaitez supprimer ungroupeentier: unset($wp_meta_boxes['dashboard'])
est clairementplus simple que deparcourir chacunboîte séparée. Mais un codeplus courtn'estpastoujourspréférable,ilne doit doncpas être utilisé dans du codepublic.
Remarquez que les deuxméthodesfonctionnent différemment: unset()
supprime un élément dutableau,tandis que remove_meta_box()
définit la valeur des éléments sur FALSE
:
foreach ( array('high', 'core', 'default', 'low') as $priority )
$wp_meta_boxes[$page][$context][$priority][$id] = false;
D'autrespluginspeuvent s'appuyer sur l'existence de cet élément -et s'arrêter après avoir utilisé unset()
.
When in doubt use the API.
Let’s say the structure of $wp_meta_boxes
will change or go away one day.
remove_meta_box()
will still work, because the API is a contract between core and developers. Unsetting some keys in a global variable might break.
unset()
is easier to write when you want to remove a whole group: unset($wp_meta_boxes['dashboard'])
is clearly simpler than running through each separate box. But shorter code is not always better, so this should not be used in public code.
Note, both methods actually work differently: unset()
removes an element from the array, while remove_meta_box()
set the elements value to FALSE
:
foreach ( array('high', 'core', 'default', 'low') as $priority )
$wp_meta_boxes[$page][$context][$priority][$id] = false;
Other plugins might rely on the existence of that element – and break after you have used unset()
.
J'ai vu deuxfaçons de supprimer lesméta-boîtes: remove_meta_box ()et unset ().
contre
remove_meta_box semblemieux carilest clairement destiné à cela,maisj'ai également vu laformulationnon définie àplusieursendroits.
Pourquoi utiliserais-je l'un contre l'autre?