1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Walker_Commentを継承したクラスがうまく適用されなくて悩んだ話

Last updated at Posted at 2022-09-03

はじめに

Wordpressのカスタムテーマを1から作成しており,コメント機能の部分をカスタマイズしたいと考えていた.Wordpressで,記事へのコメントを独自のhtml構造で出力するには,以下のようにWalker_Commentを継承して,html5_comment()をオーバーライドするのが一般的だが,定義した内容でうまく出力されずに悩んでいた.

classes/class-custom-walker-comment.php
<?php
class Custom_Comment_Walker extends Walker_Comment
{
    function html5_comment($comment, $depth, $args)
    {
?>
        <article class="comment-body">
            表示したいコメント構造など.
        </article>
<?php
    }
}
function.php
require get_template_directory() . '/classes/class-custom-walker-comment.php';
comments.php
<?php
if (have_comments()) {
    echo '<ol class="my-comments">';
    wp_list_comments(
        array(
            'walker'      => new Custom_Comment_Walker()
        )
    );
    echo '</ol>';
} else {
    echo 'No comments';
}

しかしながら,これがいつまで経っても適用されなかった...

結論

実は,html5_commentが呼ばれるためには,そのテーマがhtml5をサポートしていることが前提となる.従って,wp_list_comments()を呼び出すときに,明示的にフォーマットを指定しておく.

comments.php
<?php
if (have_comments()) {
    echo '<ol class="my-comments">';
    wp_list_comments(
        array(
            'walker'      => new Custom_Comment_Walker(),
            'format'      => 'html5'
        )
    );
    echo '</ol>';
} else {
    echo 'No comments';
}

以上でうまく表示されるはずである.ちなみに,デフォルトではxmlフォーマットが適用されるようだ.

感想

自動でhtml5フォーマットをサポートしてくれればいいのに.

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?