MENU

build_comment_query_vars_from_block()

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(配列)

blockNameattrs を含むブロック構造の配列。

  • 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

カスタムコメントタイプに対応している?

$args['type'] を自分で追加すれば可能です。

親コメントだけを取得できる?

'includeParentCommentsOnly' => true により可能。

この関数は直接使うべき?

通常はテーマやプラグイン内で間接的に使用されます。必要に応じて呼び出し可能。

まとめ

  • build_comment_query_vars_from_block() は、コメント表示用ブロックの属性を元に WP_Comment_Query 用のクエリ配列を生成するユーティリティ関数。
  • ブロックエディターを用いたテーマ開発や、独自のコメント表示の際に活用される。
  • カスタマイズも容易で、オプションの追加によって柔軟なコメント取得が可能です。
よかったらシェアしてね!
  • URLをコピーしました!

コメント

コメントする

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

目次