Customize comment list markup

时间:2012-12-25 作者:Arunkumar Srisailapathi

在创建新主题时,我们必须自定义注释流。为此,有两个功能:wp_list_comments()get_comments(). 我不太确定如何设置从中出现的内部元素的样式,如Gravatar、comment description、comment author等。为了对它们进行一些样式设置,我首先需要知道分配给它们的DOM元素。我在哪里可以找到他们?

我尝试了几乎所有的来源,我无法正确理解。

1 个回复
SO网友:fuxia

您应该使用wp_list_comments(), 因为这将调用可以处理注释线程的Walker类:

// from wp_list_comments()
if ( empty($walker) )
    $walker = new Walker_Comment;

$walker->paged_walk($_comments, $max_depth, $page, $per_page, $r);
Walker_Comment 处理注释的标记。您可以通过自定义助行器进行更改。

示例:

class Simple_Comment_Walker extends Walker_Comment
{
    function start_el( &$output, $comment, $depth, $args, $id = 0 ) {
        $depth++;
        $GLOBALS[\'comment_depth\'] = $depth;
        $GLOBALS[\'comment\'] = $comment;

        print \'<li>\' . get_comment_author_link() . \'<br>\';
        comment_text();
    }
}

wp_list_comments( array ( \'walker\' => new Simple_Comment_Walker ) );
但是,如果只想更改单个注释标记,则不需要这样做。你可以通过callback 参数到wp_list_comments() 执行相同操作:

function simple_callback() 
{
    print \'<li>\' . get_comment_author_link() . \'<br>\';
    comment_text();
}
wp_list_comments( array ( \'callback\' => \'simple_callback\' ) );
如果还想更改注释列表的容器元素,请使用自定义walker,如果只想更改单个注释,请使用回调。

您可以覆盖中的所有内容Walker_Comment, 看见wp-includes/comment-template.php 有关详细信息。

记住你应该not close 第一个注释容器(在我的示例中<li>), Walker在打印完整个线程后执行此操作。

结束

相关推荐

扩展多个Nav_Menu_Walkers是否允许嵌套菜单?

基本上,我正在尝试添加多个子导航菜单,我非常接近,但我似乎找不到解决问题的正确方法。。。我正在使用Stu Nichols CSS菜单的变体。。。代码解释得更好;-)构建此菜单所需的关系将顶层元素作为列表项,子容器作为div,子容器和同级{nth child}作为uls。。。所以结构如下。。。<li><a href=\'#\'>parent</a> <div>child-container <ul><!--1s