Automattic\WooCommerce\Blocks\BlockTypes\ProductCollection
Renderer::add_navigation_link_directives
Add interactive links to all anchors inside the Query Pagination block. This enabled client-side navigation for the product collection block.
Метод класса: Renderer{}
Хуков нет.
Возвращает
null
. Ничего (null).
Использование
$Renderer = new Renderer(); $Renderer->add_navigation_link_directives( $block_content, $block, $instance );
- $block_content(строка) (обязательный)
- The block content.
- $block(массив) (обязательный)
- The full block, including name and attributes.
- $instance(WP_Block) (обязательный)
- The block instance.
Код Renderer::add_navigation_link_directives() Renderer::add navigation link directives WC 9.9.4
public function add_navigation_link_directives( $block_content, $block, $instance ) { $query_context = $instance->context['query'] ?? array(); $is_product_collection_block = $query_context['isProductCollectionBlock'] ?? false; $query_id = $instance->context['queryId'] ?? null; $parsed_query_id = $this->parsed_block['attrs']['queryId'] ?? null; $is_enhanced_pagination_enabled = ! ( $this->parsed_block['attrs']['forcePageReload'] ?? false ); // Only proceed if the block is a product collection block, // enhanced pagination is enabled and query IDs match. if ( $is_product_collection_block && $is_enhanced_pagination_enabled && $query_id === $parsed_query_id ) { $p = new \WP_HTML_Tag_Processor( $block_content ); $p->next_tag( array( 'class_name' => 'wp-block-query-pagination' ) ); while ( $p->next_tag( 'A' ) ) { if ( $p->has_class( 'wp-block-query-pagination-next' ) || $p->has_class( 'wp-block-query-pagination-previous' ) ) { $p->set_attribute( 'data-wp-on--click', 'woocommerce/product-collection::actions.navigate' ); $p->set_attribute( 'data-wp-key', $p->has_class( 'wp-block-query-pagination-next' ) ? 'product-collection-pagination--next' : 'product-collection-pagination--previous' ); $p->set_attribute( 'data-wp-watch', 'woocommerce/product-collection::callbacks.prefetch' ); $p->set_attribute( 'data-wp-on--mouseenter', 'woocommerce/product-collection::actions.prefetchOnHover' ); } elseif ( $p->has_class( 'page-numbers' ) ) { $p->set_attribute( 'data-wp-on--click', 'woocommerce/product-collection::actions.navigate' ); $p->set_attribute( 'data-wp-key', 'product-collection-pagination-numbers--' . $p->get_attribute( 'aria-label' ) ); } } return $p->get_updated_html(); } return $block_content; }