la fonction template en tant qu'argument de rappel de la fonction wp_list_comments
, et la fonction template prend trois arguments: $comment, $args, $depth
, comme la fonction template définie dans le fichier functions.php du thème twentyeleven
,
function twentyeleven_comment( $comment, $args, $depth ) {
$GLOBALS['comment'] = $comment;
switch ( $comment->comment_type ) :
case 'pingback' :
case 'trackback' :
?>
<li class="post pingback">
<p><?php _e( 'Pingback:', 'twentyeleven' ); ?> <?php comment_author_link(); ?><?php edit_comment_link( __( 'Edit', 'twentyeleven' ), '<span class="edit-link">', '</span>' ); ?></p>
<?php
/** and more ... **/
Je souhaite appeler cette fonction ailleurs et j'ai la référence $comment
à un commentaire, mais je ne sais pas comment définir les variables $args
et $depth
. Je sais que la valeur de $depth
ou $args
peut être modifiée dans les paramètres d'administration. Je ne peux donc pas simplement définir $depth
à 5 ou à un nombre quelconque.
Comment puis-je obtenir le $args
et le $depth
???
Merci d'avance.
Eh bien, j'ai la solution. Tout d'abord, utilisez la variable globale $ comment_depth, transmettez-la à la fonction twentyeleven_comment()
et, dans la fonction twentyeleven_comment()
, définissez une nouvelle variable nommée $defaults
comme ceci:
function twentyeleven_comment( $comment, $args, $depth ) {
$defaults = array('walker' => null, 'max_depth' => '', 'style' => 'ul', 'callback' => null, 'end-callback' => null, 'type' => 'all','page' => '', 'per_page' => '', 'avatar_size' => 32, 'reverse_top_level' => null, 'reverse_children' => '');
$args = wp_parse_args($args,$defaults);
/** something else **/
}
Dans une autre fonction, appelez la fonction twentyeleven_comment()
comme ceci:
add_action('comment_post','my_action',10,2);
function my_action($comment_id,$comment_status){
$comment_g = &get_comment($comment_id);
global $comment_depth; /** here get the $depth **/
twentyeleven_comment($comment_g,array(),$comment_depth); /** invoke the function in this way **/
/*** something else goes here ***/
}
Je veux juste sortir un commentaire par le $comment_ID
merci à ceux qui ont commenté ou répondu :)
Allez-y, appelez-le de la même façon que le tventyeleven:
<?php
/* Loop through and list the comments. Tell wp_list_comments()
* to use twentyeleven_comment() to format the comments.
* If you want to overload this in a child theme then you can
* define twentyeleven_comment() and that will be used instead.
* See twentyeleven_comment() in twentyeleven/functions.php for more.
*/
wp_list_comments( array( 'callback' => 'twentyeleven_comment' ) );
?>
la fonction wp_list_comments va gérer $ depth et les autres $ args eux-mêmes (dans le walker). Voir le code source de wp_list_comments et le marcheur en utilisant callback arg