render_block_core_query

函数
render_block_core_query ( $attributes, $content, $block )
参数
  • (array) $attributes Block attributes.
    Required:
  • (string) $content Block default content.
    Required:
  • (WP_Block) $block The block instance.
    Required:
返回值
  • (string) Returns the modified output of the query block.
定义位置
相关方法
register_block_core_queryrender_block_core_query_titlerender_block_core_coverrender_block_core_rssrender_block_core_search
引入
6.4.0
弃用
-

修改服务器上的静态“core/query”区块。

function render_block_core_query( $attributes, $content, $block ) {
	if ( $attributes['enhancedPagination'] && isset( $attributes['queryId'] ) ) {
		$p = new WP_HTML_Tag_Processor( $content );
		if ( $p->next_tag() ) {
			// Add the necessary directives.
			$p->set_attribute( 'data-wp-interactive', true );
			$p->set_attribute( 'data-wp-navigation-id', 'query-' . $attributes['queryId'] );
			// Use context to send translated strings.
			$p->set_attribute(
				'data-wp-context',
				wp_json_encode(
					array(
						'core' => array(
							'query' => array(
								'loadingText' => __( 'Loading page, please wait.' ),
								'loadedText'  => __( 'Page Loaded.' ),
							),
						),
					),
					JSON_HEX_TAG | JSON_HEX_APOS | JSON_HEX_AMP
				)
			);
			$content = $p->get_updated_html();

			// Mark the block as interactive.
			$block->block_type->supports['interactivity'] = true;

			// Add a div to announce messages using `aria-live`.
			$last_div_position = strripos( $content, '</div>' );
			$content           = substr_replace(
				$content,
				'<div
					class="wp-block-query__enhanced-pagination-navigation-announce screen-reader-text"
					aria-live="polite"
					data-wp-text="context.core.query.message"
				></div>
				<div
					class="wp-block-query__enhanced-pagination-animation"
					data-wp-class--start-animation="selectors.core.query.startAnimation"
					data-wp-class--finish-animation="selectors.core.query.finishAnimation"
				></div>',
				$last_div_position,
				0
			);
		}
	}

	$view_asset = 'wp-block-query-view';
	if ( ! wp_script_is( $view_asset ) ) {
		$script_handles = $block->block_type->view_script_handles;
		// If the script is not needed, and it is still in the `view_script_handles`, remove it.
		if (
			( ! $attributes['enhancedPagination'] || ! isset( $attributes['queryId'] ) )
			&& in_array( $view_asset, $script_handles, true )
		) {
			$block->block_type->view_script_handles = array_diff( $script_handles, array( $view_asset ) );
		}
		// If the script is needed, but it was previously removed, add it again.
		if ( $attributes['enhancedPagination'] && isset( $attributes['queryId'] ) && ! in_array( $view_asset, $script_handles, true ) ) {
			$block->block_type->view_script_handles = array_merge( $script_handles, array( $view_asset ) );
		}
	}

	$style_asset = 'wp-block-query';
	if ( ! wp_style_is( $style_asset ) ) {
		$style_handles = $block->block_type->style_handles;
		// If the styles are not needed, and they are still in the `style_handles`, remove them.
		if (
			( ! $attributes['enhancedPagination'] || ! isset( $attributes['queryId'] ) )
			&& in_array( $style_asset, $style_handles, true )
		) {
			$block->block_type->style_handles = array_diff( $style_handles, array( $style_asset ) );
		}
		// If the styles are needed, but they were previously removed, add them again.
		if ( $attributes['enhancedPagination'] && isset( $attributes['queryId'] ) && ! in_array( $style_asset, $style_handles, true ) ) {
			$block->block_type->style_handles = array_merge( $style_handles, array( $style_asset ) );
		}
	}

	return $content;
}

常见问题

FAQs
查看更多 >