collector->get_data();
if ( empty( $data->post_blocks ) ) {
return;
}
if ( ! $data->post_has_blocks ) {
$this->before_non_tabular_output();
$notice = __( 'This post contains no blocks.', 'query-monitor' );
echo $this->build_notice( $notice ); // WPCS: XSS ok.
$this->after_non_tabular_output();
return;
}
$this->before_tabular_output();
echo '';
echo '';
echo ' ';
echo '';
echo '# ';
echo '' . esc_html__( 'Block Name', 'query-monitor' ) . ' ';
echo '' . esc_html__( 'Attributes', 'query-monitor' ) . ' ';
if ( $data->has_block_context ) {
echo '' . esc_html__( 'Context', 'query-monitor' ) . ' ';
}
echo '' . esc_html__( 'Render Callback', 'query-monitor' ) . ' ';
if ( $data->has_block_timing ) {
echo '' . esc_html__( 'Render Time', 'query-monitor' ) . ' ';
}
echo '' . esc_html__( 'Inner HTML', 'query-monitor' ) . ' ';
echo '
' . esc_html( $referenced_type ) . '',
'wp_block'
);
}
}
}
$media_blocks = array(
'core/audio' => 'id',
'core/cover' => 'id',
'core/cover-image' => 'id',
'core/file' => 'id',
'core/image' => 'id',
'core/media-text' => 'mediaId', // (╯°□°)╯︵ ┻━┻
'core/video' => 'id',
);
if ( isset( $media_blocks[ $block['blockName'] ] ) && is_array( $block['attrs'] ) && ! empty( $block['attrs'][ $media_blocks[ $block['blockName'] ] ] ) ) {
$referenced_post = get_post( $block['attrs'][ $media_blocks[ $block['blockName'] ] ] );
if ( ! $referenced_post ) {
$block_error = true;
$error_message = esc_html__( 'Referenced media does not exist.', 'query-monitor' );
} else {
$referenced_type = $referenced_post->post_type;
$referenced_pto = get_post_type_object( $referenced_type );
if ( 'attachment' !== $referenced_type ) {
$block_error = true;
$error_message = sprintf(
/* translators: %1$s: Erroneous post type name, %2$s: WordPress attachment post type name */
esc_html__( 'Referenced media is of type %1$s instead of %2$s.', 'query-monitor' ),
'' . esc_html( $referenced_type ) . '',
'attachment'
);
}
}
}
$template_part_blocks = array(
'core/template-part' => true,
);
if ( isset( $template_part_blocks[ $block['blockName'] ] ) && is_array( $block['attrs'] ) && ! empty( $block['attrs']['slug'] ) && ! empty( $block['attrs']['theme'] ) ) {
$referenced_template_part = sprintf(
'%s//%s',
$block['attrs']['theme'],
$block['attrs']['slug']
);
$referenced_pto = get_post_type_object( 'wp_template_part' );
}
if ( $block_error ) {
$row_class = 'qm-warn';
}
echo '' . esc_html( QM_Util::json_format( $block['attrs'] ) ) . '';
}
echo '' . esc_html( QM_Util::json_format( $block['context'] ) ) . '';
}
echo '' . esc_html( QM_Util::get_callback_name( $block['callback'] ) ) . '';
if ( isset( $block['callback']['error'] ) ) {
// phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
echo '';
echo esc_html( substr( $inner_html, 0, 200 ) ) . ' …';
echo '';
echo esc_html( $inner_html );
echo '';
echo esc_html( $inner_html );
echo '