build_comment_query_vars_from_block()
は、ブロック(特にコメント関連ブロック)に指定された属性情報から、WP_Comment_Query
クラスで使用するクエリ引数の配列を構築する関数です。
コメントの並び順や表示数、親子関係などの条件に応じたクエリを生成し、テンプレートやコメント表示処理に活用されます。
目次
機能の説明
どんな関数か?
この関数は、コメント関連ブロックのレンダリング中に、ブロック属性(attributes
)から WP_Comment_Query
用のパラメータ(例: number
, orderby
, order
, post_id
など)を構築して返します。
WordPress の ブロックテーマや コメントテンプレート(例: core/comments-query-loop
) で使用される内部的な補助関数です。
シンプルなコード例
$block = [
'blockName' => 'core/comments-query-loop',
'attrs' => [
'perPage' => 5,
'order' => 'asc'
],
];
$query_vars = build_comment_query_vars_from_block( $block );
print_r( $query_vars );
出力例(WP_Comment_Query
用の配列)
Array
(
[number] => 5
[orderby] => comment_date_gmt
[order] => ASC
[status] => approve
[post_id] => 123
)
使い方の説明
array build_comment_query_vars_from_block( array $block );
引数
$block
(配列)-
blockName
とattrs
を含むブロック構造の配列。attrs['perPage']
: 1ページに表示するコメント数attrs['order']
: 昇順 or 降順 (asc
またはdesc
)attrs['includeParentCommentsOnly']
: 親コメントのみを含めるフラグ
戻り値
WP_Comment_Query
用の連想配列。例:
[
'number' => 5,
'orderby' => 'comment_date_gmt',
'order' => 'ASC',
'status' => 'approve',
'post_id' => get_the_ID(),
'parent' => 0 // オプション
]
一緒に使うことが多い関連タグ・関数
WP_Comment_Query
$args = build_comment_query_vars_from_block( $block );
$comments = get_comments( $args );
get_comments()
WP_Comment_Query
をラップして結果を取得する標準関数。
追加情報で取得したい場合
より詳細にフィルタリングしたい場合、以下のように WP_Comment_Query
を直接操作できます:
$args = build_comment_query_vars_from_block( $block );
$args['type'] = 'comment'; // ピンバック・トラックバックを除外
$args['meta_query'] = [
[
'key' => 'my_custom_meta_key',
'value' => 'some_value'
]
];
$comments = get_comments( $args );
この関数を利用してのカスタマイズ
ブロックテーマ用に独自のコメントループを挿入
$block = [
'blockName' => 'core/comments-query-loop',
'attrs' => [ 'perPage' => 10, 'order' => 'desc' ]
];
$comments = get_comments( build_comment_query_vars_from_block( $block ) );
foreach ( $comments as $comment ) {
echo '<li>' . esc_html( $comment->comment_content ) . '</li>';
}
想定されるトラブル
post_id
が正しく設定されない
解決方法
build_comment_query_vars_from_block()
は現在の投稿 ID(get_the_ID()
)に依存しています。ループ外で呼び出す場合は明示的に post_id
を渡す必要があります。
global $post;
$block['attrs']['postId'] = $post->ID;
Q&A
まとめ
build_comment_query_vars_from_block()
は、コメント表示用ブロックの属性を元にWP_Comment_Query
用のクエリ配列を生成するユーティリティ関数。- ブロックエディターを用いたテーマ開発や、独自のコメント表示の際に活用される。
- カスタマイズも容易で、オプションの追加によって柔軟なコメント取得が可能です。
コメント