File: /home/epubdjye/www17/wp-content/plugins_bcknd/gutenberg/build/block-library/blocks/query-loop.php
<?php
/**
* Server-side rendering of the `core/query-loop` block.
*
* @package WordPress
*/
/**
* Renders the `core/query-loop` block on the server.
*
* @param array $attributes Block attributes.
* @param string $content Block default content.
* @param WP_Block $block Block instance.
*
* @return string Returns the output of the query, structured using the layout defined by the block's inner blocks.
*/
function gutenberg_render_block_core_query_loop( $attributes, $content, $block ) {
$page_key = isset( $block->context['queryId'] ) ? 'query-' . $block->context['queryId'] . '-page' : 'query-page';
$page = empty( $_GET[ $page_key ] ) ? 1 : filter_var( $_GET[ $page_key ], FILTER_VALIDATE_INT );
$query = array(
'post_type' => 'post',
'offset' => isset( $block->context['query']['perPage'] ) ? ( $block->context['query']['perPage'] * ( $page - 1 ) + $block->context['query']['offset'] ) : 0,
'category__in' => $block->context['query']['categoryIds'],
);
if ( isset( $block->context['query']['perPage'] ) ) {
$query['posts_per_page'] = $block->context['query']['perPage'];
}
$posts = get_posts( $query );
$content = '';
foreach ( $posts as $post ) {
$content .= (
new WP_Block(
$block->parsed_block,
array(
'postType' => $post->post_type,
'postId' => $post->ID,
)
)
)->render( array( 'dynamic' => false ) );
}
return $content;
}
/**
* Registers the `core/query-loop` block on the server.
*/
function gutenberg_register_block_core_query_loop() {
register_block_type_from_metadata(
__DIR__ . '/query-loop',
array(
'render_callback' => 'gutenberg_render_block_core_query_loop',
'skip_inner_blocks' => true,
)
);
}
add_action( 'init', 'gutenberg_register_block_core_query_loop', 20 );