如何在循环外使用回调调用wp_list_Comments()

时间:2013-01-29 作者:towry

模板函数作为的回调参数wp_list_comments 函数,模板函数采用三个参数:$comment, $args, $depth, 与主题中定义的模板函数类似twentyeleven\'s功能。php,

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 ... **/
我想在另一个地方调用此函数$comment 引用注释,但我不知道如何设置$args$depth 变量。我知道$depth$args 可以在管理设置中更改,因此,我不能只设置$depth 到5或任何数字。

我怎样才能得到$args$depth ???

提前谢谢。

3 个回复
最合适的回答,由SO网友:towry 整理而成

好吧,我有办法了。首先,使用全局变量$comment\\u depth,将其传递给twentyeleven_comment() 函数,并在twentyeleven_comment() 函数,定义一个名为$defaults 像这样:

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 **/
}
在另一个函数中,调用twentyeleven_comment() 功能如下:

 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 ***/
}
我只想通过$comment_ID

感谢那些评论或回答的人:)

SO网友:david.binda

继续用Tventyleven的方式来称呼它:

<?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\' ) );
            ?>
wp\\u list\\u comments函数将管理$depth和其他$参数本身(在walker中)。看见source code of wp_list_comments 以及walker using callback arg

SO网友:Ashnet

确保“echo”为真

wp_list_comments(
            array(
                \'avatar_size\' => 48,
                \'style\'       => \'ol\',
                \'short_ping\'  => true,
                \'per_page\' => get_option(\'comments_per_page\'),
                \'echo\' => true,
                \'callback\' => \'comments_function_to_call\'
            )
);

结束

相关推荐

如何正确使用Comments-template.php

我想修改已登录用户和未登录用户的评论表单。我通过更改注释修改了未登录用户的表单。php,但我不太确定如何为登录用户修改我的表单。我知道我必须使用comments\\u template(),但每当我尝试在页面中使用它时。php,我遇到这样的错误Notice: Undefined variable: args in {PATH}/twwr-theme/comments-template.php on line 13 这些是我评论的内容。php,有点乱<?php if (!empty