万が一、当サイトで重大な問題を発見した際などは、フォーラムや WordSlack #docs チャンネルでお知らせください。</p>
テンプレートタグ/wp list comments
目次
説明
様々なパラメータや管理画面で行う設定に基づいて、投稿や固定ページのコメントを表示します。
プラグインとテーマの移行/2.7 も参照してください。
使い方
<?php wp_list_comments( $args, $comments ); ?>
パラメータ
- $args
- (配列) (オプション) この関数の引数。
- 初期値:
<?php $args = array( 'walker' => null, 'max_depth' => '', 'style' => 'ul', 'callback' => null, 'end-callback' => null, 'type' => 'all', 'reply_text' => 'Reply', 'page' => '', 'per_page' => '', 'avatar_size' => 32, 'reverse_top_level' => null, 'reverse_children' => '', 'format' => 'html5', // テーマが 'HTML5' をサポートしないなら 'xhtml' 'short_ping' => false, // バージョン3.6以降 'echo' => true // 真偽値、デフォルトが true ); ?>
引数 'max_depth'、'per_page' と 'reverse_top_level' は管理画面のディスカッション設定で簡単に制御できます。ただしテーマはこれらの設定を上書きできます。
- $comments
- (配列) (オプション) get_comments /en のクエリで取得した配列。
- 初期値: デフォルトのパラメータで get_comments /en を呼び出したときの戻り値。
引数
- 'walker'
- ( Walker オブジェクト ) コメントを出力するときに使うカスタム Walker クラス /en のオブジェクト。これがコメント HTML をカスタマイズする一番の方法です。
<?php wp_list_comments( array( 'walker' => new Walker_Comment() ) );
- 'max_depth'
- ( 整数 ) 取得するコメントの階層の深さ(コメントへの返信)。
- 'style'
- ( 文字列 )
'div'
、'ol'
または'ul'
(デフォルト)。外側のタグは明示的に書かなければならないことに注意してください。例えば:
<div class="comment list"> <?php wp_list_comments( array( 'style' => 'div' ) ); ?> </div>
または
<ol class="comment list"> <?php wp_list_comments( array( 'style' => 'ol' ) ); ?> </ol>
- 'callback'
- ( コールバック ) 各コメントの開始タグと内容を表示するカスタム関数の名前。これを使えば、各コメントを表示するとき WordPress 内部の機能をバイパスし、代わりにカスタム関数を呼び出します。HTML レイアウトを極端に変えてコメントを表示するために使ってください。コールバックは
<div>
、<ol>
または<ul>
の開始タグ(style パラメータに応じて)を出力しなければなりませんが、終了タグを含めてはいけません。WordPress は終了タグを自動的に追加しますが、end-callback を使えばこのデフォルトを上書きできます。callback と end-callback は階層化されたコメントを扱いやすくするために分けられています。注意して使ってください。
- 'end-callback'
- ( コールバック ) 各コメントの終了タグを出力するカスタム関数の名前。これを使えば、各コメントが終わるとき style パラメータに応じて
</div>
、</ol>
または</li>
を出力する WordPress のデフォルトをバイパスする代わりに、カスタム関数を呼び出します。コメントの終了タグをカスタマイズするために使ってください。callback と end-callback は階層化されたコメントを扱いやすくするために分けられています。注意して使ってください。
- 'type'
- ( 文字列 ) 表示するコメントの種類。
'all'
、'comment'
、'trackback'
、'pingback'
または'pings'
を指定できます。'pings'
は'trackback'
と'pingback'
を両方指定したのと同じです。
- 'reply_text'
- ( 文字列 ) 各コメントの返信用リンクとして表示する文字列。(これはこの関数の引数ではありませんが
get_comment_reply_link()
関数へ渡されます。)
- 'page'
- ( 整数 ) ページ分けした場合に表示対象とするページ。
- 'per_page'
- ( 整数 ) 1ページに表示するコメントの数。
- 'avatar_size'
- ( 整数 ) 表示するアバターの大きさをピクセル数で指定。http://gravatar.com/ は1から512までの大きさをサポートします。0を指定するとアバターを表示しません。
- 'reverse_top_level'
- ( 真偽値 ) これを
true
にすると最新のコメントを先頭にして逆順に、false
にすると一番古いコメントを最初に表示します。省略すると WordPress ダッシュボード内の設定を使います。
- 'reverse_children'
- ( 真偽値 ) これを
true
にすると一番新しい子コメント(返信)が付いたコメントを先頭にして逆順に表示します。
- 'format'
- ( 真偽値 ) 'html5' または 'xhtml' を指定します。デフォルトはテーマの
current_theme_supports( 'html5' )
の設定値です。
- 'short_ping'
- ( 真偽値 ) short ping を使うかどうか。
- 訳注: short ping はトラックバックをピンバック形式で短く表示します。
- 'echo'
- ( 真偽値 ) コメントのリストを表示 (echo) するか、表示せず値として返すか。
用例
デフォルトの使い方
コメントを番号付きリストで出力します。スレッド(入れ子)形式やページ分けは 管理画面/ディスカッション設定 で有効にするか無効にします。
<ol class="commentlist"> <?php wp_list_comments(); ?> </ol>
コメントだけをカスタム表示する
コメントのみ(ピンバックやトラックバックを含まない)を表示し、コールバック関数を用いて見た目を整えます。もし返信リンクが表示されなければ、引数 max_depth=X を追加してもよいでしょう。
<ul class="commentlist"> <?php wp_list_comments( 'type=comment&callback=mytheme_comment' ); ?> </ul>
テーマの functions.php ファイル でコールバック関数を定義しておく必要があります。コールバック関数の例を以下に示します:
function mytheme_comment($comment, $args, $depth) { if ( 'div' === $args['style'] ) { $tag = 'div'; $add_below = 'comment'; } else { $tag = 'li'; $add_below = 'div-comment'; } ?> <<?php echo $tag ?> <?php comment_class( empty( $args['has_children'] ) ? '' : 'parent' ) ?> id="comment-<?php comment_ID() ?>"> <?php if ( 'div' != $args['style'] ) : ?> <div id="div-comment-<?php comment_ID() ?>" class="comment-body"> <?php endif; ?> <div class="comment-author vcard"> <?php if ( $args['avatar_size'] != 0 ) echo get_avatar( $comment, $args['avatar_size'] ); ?> <?php printf( __( '<cite class="fn">%s</cite> <span class="says">says:</span>' ), get_comment_author_link() ); ?> </div> <?php if ( $comment->comment_approved == '0' ) : ?> <em class="comment-awaiting-moderation"><?php _e( 'Your comment is awaiting moderation.' ); ?></em> <br /> <?php endif; ?> <div class="comment-meta commentmetadata"><a href="<?php echo htmlspecialchars( get_comment_link( $comment->comment_ID ) ); ?>"> <?php /* translators: 1: date, 2: time */ printf( __('%1$s at %2$s'), get_comment_date(), get_comment_time() ); ?></a><?php edit_comment_link( __( '(Edit)' ), ' ', '' ); ?> </div> <?php comment_text(); ?> <div class="reply"> <?php comment_reply_link( array_merge( $args, array( 'add_below' => $add_below, 'depth' => $depth, 'max_depth' => $args['max_depth'] ) ) ); ?> </div> <?php if ( 'div' != $args['style'] ) : ?> </div> <?php endif; ?> <?php }
後続の </li>
が無いことに注意してください。WordPress は子要素を出力した後に適切な終了タグを自動で追加します。
特定の固定ページや投稿のコメントを表示
特定の固定ページまたは投稿のコメントを番号付きリストで出力します。スレッド(入れ子)形式やページ分けは 管理画面/ディスカッション設定 で有効にするか無効にします。
<ol class="commentlist"> <?php //固定ページまたは投稿のコメントを取得 $comments = get_comments(array( 'post_id' => XXX, 'status' => 'approve' //表示したいコメントの種類に変えてください )); //コメントのリストを表示 wp_list_comments(array( 'per_page' => 10, //ページ分けを有効化 'reverse_top_level' => false //最古のコメントをリストの先頭に表示 ), $comments); ?> </ol>
変更履歴
新規導入: 2.7.0
ソースファイル
wp_list_comments() は wp-includes/comment-template.php
にあります。
関連項目
リスト・ドロップダウン関数: wp_list_authors(), wp_list_categories(), wp_list_pages(), wp_list_bookmarks(), wp_list_comments(), wp_get_archives(), wp_page_menu(), wp_dropdown_pages(), wp_dropdown_categories(), wp_dropdown_users()
コメント関数:
cancel_comment_reply_link(),
comment_author(),
comment_author_email(),
comment_author_email_link(),
comment_author_IP(),
comment_author_link(),
comment_author_rss(),
comment_author_url(),
comment_author_url_link(),
comment_class(),
comment_date(),
comment_excerpt(),
comment_form_title(),
comment_form(),
comment_ID(),
comment_id_fields() / en,
comment_reply_link(),
comment_text(),
comment_text_rss(),
comment_time(),
comment_type(),
comments_link,
comments_number(),
comments_open(),
comments_popup_link(),
comments_popup_script(),
comments_rss_link(),
get_avatar(),
next_comments_link(),
paginate_comments_links(),
permalink_comments_rss(),
previous_comments_link(),
wp_list_comments()
最新英語版: WordPress Codex » Function Reference/wp_list_comments (最新版との差分)