はじめに
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フォーマットをサポートしてくれればいいのに.