web-dev-qa-db-ja.com

コメントリストのマークアップをカスタマイズする

新しいテーマを作成している間に、コメントフローをカスタマイズする必要があります。そのためには、wp_list_comments()get_comments()の2つの関数があります。 Gravatar、コメントの説明、コメントの作成者など、そこから表示される内部要素のスタイルを設定する方法はよくわかりません。それらのスタイルを設定するには、まずそれらに割り当てられたDOM要素を知る必要があります。どこでそれらを見つけることができますか?

私はほとんどすべての情報源を試してみました、私は正しく理解することができません。

コメントスレッドを扱うことができるWalkerクラスを呼び出すので、wp_list_comments()を使うべきです:

// 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_Comment内のすべてを上書きすることができます。詳細についてはwp-includes/comment-template.phpを参照してください。

  • 閉じない 最初のコメントコンテナ(私の例では<li>)にすべきであることを覚えておいてください、Walkerはスレッド全体が印刷されたときにこれを行います。

4
fuxia