Lors de la configuration de boîtes de méta dans un type de message personnalisé, je l’ai déjà fait avec le crochet add_meta_boxes
, par exemple.
add_action('add_meta_boxes', 'meta_box_setup');
function meta_box_setup()
{
add_meta_box(
'mb_movie_review',
'Movie Review Details',
'display_movie_review_mb',
'movie-reviews',
'side',
'high'
);
}
Mais je viens de lire ce tutoriel qui fait ce qui suit en utilisant le hook admin_init
, comme alors ...
add_action('admin_init', 'meta_box_setup');
function meta_box_setup()
{
add_meta_box(
'mb_movie_review',
'Movie Review Details',
'display_movie_review_mb',
'movie-reviews',
'side',
'high'
);
}
C'est la première fois que je le vois utiliser le hook admin_init
.
Question
La dernière méthode (en utilisant admin_init
) fait fonctionne mais ...
Regardez cette liste: http://codex.wordpress.org/Plugin_API/Action_Reference
add_meta_boxes
est préférable. Un jour, dans l'avenir, WordPress pourrait changer quelque chose et en utilisant les crochets les plus appropriés, vous augmentez vos chances que votre code fonctionne encore à l'avenir.add_theme_support()
qui est généralement utilisé avec le hook d'action after_setup_theme
uniquement pour les utilisateurs connectés qui sont des administrateurs, mais ce hook ne vous permet pas encore d'accéder à ces informations. Il vous faudra donc probablement utiliser les crochets d'action set_current_user
ou init
(après quelques recherches, s'il est prudent de le faire).Il y a plusieurs autres crochets:
do_action( 'add_meta_boxes', $post_type, $post );
et exécute immédiatement après:
do_action( "add_meta_boxes_{$post_type}", $post );
Si vous souhaitez effectuer différentes vérifications d'abandon à partir du raccord/rappel qui enregistre les méta-boîtes, utilisez l'une des méthodes ci-dessus, car l'objet \WP_Screen
n'est pas rempli dès l'exécution de admin_init
.
Si vous avez utilisé le hook plus générique add_meta_boxes
, vous pouvez vérifier son premier argument:
function register( $post_type, $post )
{
if ( get_current_screen()->post_type !== $post_type )
return;
add_meta_box( /* etc. */ );
}
Si vous ne souhaitez pas ajouter votre méta-boîte tant que le message n'a pas été enregistré au moins une fois, vous pouvez vérifier
if ( 'add' !== get_current_screen()->action )
return;
etc. Conclusion: si vous voulez restreindre les choses, utilisez les crochets ci-dessus.