J'essaie d'utiliser add_meta_box()
pour créer des méta-informations pour mon type de publication personnalisé. Jusqu'ici, ça va, mais je ne comprends pas pourquoi le $callback
a cette apparence.
Voici un exemple tiré d'un didacticiel WordPress :
/* Display the post meta box. */
function callback( $post ) { ?>
<?php wp_nonce_field( basename( __FILE__ ), 'smashing_post_class_nonce' ); ?>
<p>
<label for="smashing-post-class"><?php _e( "Add a custom CSS class, which will be applied to WordPress' post class.", 'example' ); ?></label>
<br />
<input class="widefat" type="text" name="smashing-post-class" id="smashing-post-class" value="<?php echo esc_attr( get_post_meta( $post->ID, 'smashing_post_class', true ) ); ?>" size="30" />
</p>
<?php }
Quoi de neuf avec ?>
(sur la deuxième ligne) et <?php}
(sur la dernière ligne)? Je ne comprends pas.
Puis-je simplement renvoyer du HTML au lieu de le faire? Comment WordPress affiche-t-il le code HTML s'il est simplement tapé brut dans une fonction?
Parfois, lorsque vous travaillez avec un bloc HTML plus volumineux, il est plus facile de simplement fermer vos balises PHP et de taper directement le code HTML au lieu d'essayer de modifier echo
votre code HTML dans PHP. Oui, vous devriez pouvoir echo
votre code HTML également.
Edit: je voudrais examiner de plus près le contexte de votre exemple , car il est plus courant dans WordPress de faire cela dans un thème plutôt que dans une fonction , comme c'est le cas ici. Du tutoriel:
Vous devez toujours afficher le code HTML de la méta-boîte. C’est là que la fonction smashing_post_class_meta_box () entre en jeu (paramètre $ callback à partir de ci-dessus).
Ensuite, l'exemple de code que vous avez posté est affiché et expliqué plus en détail:
La fonction ci-dessus affiche la sortie HTML de votre méta-boîte. Il affiche une entrée nonce masquée. Il affiche ensuite un élément d'entrée pour l'ajout d'une classe de publication personnalisée, ainsi que la sortie de la classe personnalisée, le cas échéant.
Ok, c'est bien, mais pour comprendre pourquoi nous sommes en mesure d'écrire le code HTML de cette manière dans notre fonction, nous devons revenir à l'étape précédente du didacticiel où nous avons ajouté la méta-boîte:
/* Create one or more meta boxes to be displayed on the post editor screen. */
function smashing_add_post_meta_boxes() {
add_meta_box(
'smashing-post-class', // Unique ID
esc_html__( 'Post Class', 'example' ), // Title
'smashing_post_class_meta_box', // Callback function
'post', // Admin page (or post type)
'side', // Context
'default' // Priority
);
}
Vous pouvez voir ici que lors de l'ajout de la boîte méta, nous avons la fonction de rappel de votre question nommée smashing_post_class_meta_box
. C’est uniquement parce que la fonction smashing_post_class_meta_box
est liée à cette méta-boîte spécifique que le code HTML est analysé ici. Si vous venez d’exécuter la fonction smashing_post_class_meta_box
de manière aléatoire, elle ne s’affiche pas du tout comme il serait probablement en cours d'exécution avant l'initiation WordPress.