PluginProbe ʕ •ᴥ•ʔ
SureCart – Ecommerce Made Easy For Selling Physical Products, Digital Downloads, Subscriptions, Donations, & Payments / 4.6.1
SureCart – Ecommerce Made Easy For Selling Physical Products, Digital Downloads, Subscriptions, Donations, & Payments v4.6.1
4.7.0 4.6.6 4.6.5 4.6.4 4.6.3 4.6.2 4.6.1 4.6.0 4.5.1 4.5.0 4.4.2 4.4.1 4.4.0 4.3.3 4.3.2 4.3.1 4.3.0 4.2.3 4.2.2 4.2.1 1.0.3 1.0.4 1.0.5 1.0.6 1.1.0 1.1.1 1.1.10 1.1.11 1.1.12 1.1.13 1.1.14 1.1.15 1.1.16 1.1.17 1.1.18 1.1.19 1.1.2 1.1.3 1.1.4 1.1.5 1.1.6 1.1.7 1.1.8 1.1.9 1.10.0 1.10.1 1.10.2 1.10.3 1.10.4 1.11.0 1.11.1 1.11.2 1.2.0 1.2.1 1.2.2 1.2.3 1.2.4 1.2.5 1.3.0 1.3.1 1.3.2 1.3.3 1.3.4 1.4.0 1.4.1 1.4.2 1.5.0 1.5.1 1.5.2 1.5.3 1.5.4 1.5.5 1.5.6 1.5.7 1.5.8 1.6.0 1.6.1 1.6.2 1.6.3 1.6.4 1.7.0 1.7.1 1.7.2 1.8.0 1.8.1 1.8.2 1.8.3 1.8.4 1.8.5 1.9.0 1.9.1 1.9.2 1.9.3 1.9.4 1.9.5 2.0.0 2.0.1 2.1.0 2.1.1 2.1.2 2.1.3 2.1.4 2.10.0 2.10.1 2.11.0 2.11.1 2.11.2 2.11.3 2.11.4 2.12.0 2.13.0 2.14.0 2.14.1 2.15.0 2.15.1 2.16.0 2.16.1 2.16.2 2.16.3 2.17.0 2.17.1 2.17.2 2.18.0 2.19.0 2.19.2 2.19.3 2.19.4 2.2.0 2.2.1 2.20.0 2.20.1 2.20.2 2.20.3 2.20.4 2.20.5 2.20.6 2.21.0 2.22.0 2.22.1 2.23.0 2.24.0 2.25.0 2.25.1 2.25.2 2.26.0 2.27.0 2.27.1 2.28.0 2.29.0 2.29.1 2.29.2 2.29.3 2.29.4 2.3.0 2.3.1 2.30.0 2.31.0 2.31.1 2.31.2 2.31.3 2.4.0 2.4.1 2.4.2 2.4.3 2.4.4 2.40.0 2.40.1 2.5.0 2.5.1 2.5.2 2.6.0 2.6.1 2.6.2 2.7.0 2.7.1 2.7.2 2.7.3 2.7.4 2.7.5 2.8.0 2.8.1 2.8.2 2.8.3 2.8.4 2.9.0 3.0.0 3.0.0-RC1 3.0.0-RC2 3.0.0-beta1 3.0.0-beta2 3.0.1 3.0.2 3.0.3 3.0.4 3.0.5 3.1.0 3.1.1 3.1.2 3.1.3 3.1.4 3.1.5 3.1.6 3.10.0 3.10.1 3.11.0 3.12.0 3.13.0 3.13.1 3.13.2 3.13.3 3.13.4 3.14.0 3.15.0 3.15.1 3.15.2 3.15.3 3.15.4 3.15.5 3.16.0 3.16.1 3.16.2 3.16.3 3.16.4 3.16.5 3.16.6 3.16.7 3.16.8 3.17.0 3.17.1 3.17.2 3.17.3 3.17.4 3.17.5 3.17.6 3.18.0 3.19.0 3.19.1 3.19.2 3.2.0 3.2.1 3.2.2 3.20.0 3.20.1 3.3.0 3.3.1 3.4.0 3.4.1 3.4.2 3.4.3 3.5.0 3.5.1 3.5.2 3.5.3 3.6.0 3.6.1 3.6.2 3.7.0 3.7.1 3.7.2 3.7.3 3.8.0 3.8.1 3.8.2 3.8.3 3.8.4 3.8.5 3.9.0 4.0.0 4.0.1 4.0.2 4.0.3 trunk 4.1.0 0.2.19.1 4.1.1 1.0.0 4.2.0 1.0.1 1.0.2
surecart / packages / blocks-next / build / blocks / product-template / view.php
surecart / packages / blocks-next / build / blocks / product-template Last commit date
block.json 11 months ago controller.php 1 year ago index.asset.php 11 months ago index.js 11 months ago style-index-rtl.css 1 year ago style-index.css 1 year ago view.php 11 months ago
view.php
80 lines
1 <?php
2 // we have no posts.
3
4 use SureCart\Models\Blocks\ProductPageBlock;
5
6 if ( ! $query->have_posts() ) {
7 return '';
8 }
9 ?>
10
11 <ul <?php echo wp_kses_data( get_block_wrapper_attributes( $wrapper_attributes ) ); ?>>
12 <?php
13 while ( $query->have_posts() ) :
14 $query->the_post();
15
16 // Get an instance of the current Post Template block.
17 $block_instance = $block->parsed_block;
18
19 // Set the block name to one that does not correspond to an existing registered block.
20 // This ensures that for the inner instances of the Post Template block, we do not render any block supports.
21 $block_instance['blockName'] = 'core/null';
22
23 $product_post_id = get_the_ID();
24 $product_post_type = get_post_type();
25 $filter_block_context = static function ( $context ) use ( $product_post_id, $product_post_type ) {
26 $context['postType'] = $product_post_type;
27 $context['postId'] = $product_post_id;
28 return $context;
29 };
30
31 $change_thumbnail_size = static function ( $size, $post_id ) use ( $product_post_id ) {
32 if ( $post_id === $product_post_id ) {
33 return apply_filters( 'surecart/product-list/thumbnail-cover-size', 'large', $post_id );
34 }
35 return $size;
36 };
37
38 // Use an early priority to so that other 'render_block_context' filters have access to the values.
39 add_filter( 'render_block_context', $filter_block_context, 1 );
40 add_filter( 'post_thumbnail_size', $change_thumbnail_size, 1, 2 );
41
42 // Render the inner blocks of the Post Template block with `dynamic` set to `false` to prevent calling
43 // `render_callback` and ensure that no wrapper markup is included.
44 $block_content = ( new WP_Block( $block_instance ) )->render( array( 'dynamic' => false ) );
45 $has_button = ( new \WP_HTML_Tag_Processor( $block_content ?? '' ) )->next_tag( 'button' );
46 $has_link = ( new \WP_HTML_Tag_Processor( $block_content ?? '' ) )->next_tag( 'a' );
47 $html_tag = $has_link || $has_button ? 'form' : 'a';
48
49 remove_filter( 'render_block_context', $filter_block_context, 1 );
50 remove_filter( 'post_thumbnail_size', $change_thumbnail_size, 1 );
51
52 // Wrap the render inner blocks in a `li` element with the appropriate post classes.
53 $post_classes = implode( ' ', get_post_class( 'wp-block-post' ) );
54
55 $controller = new ProductPageBlock();
56 $state = $controller->state();
57 $context = $controller->context();
58
59 wp_interactivity_state( 'surecart/product-page', $state );
60 ?>
61
62 <li class="sc-product-item sc-has-animation-fade-up" data-wp-key="post-template-item-<?php echo (int) $product_post_id; ?>">
63 <form
64 data-wp-interactive='{ "namespace": "surecart/product-page" }'
65 data-wp-on--submit="callbacks.handleSubmit"
66 data-wp-init="callbacks.init"
67 <?php
68 echo wp_kses_data( wp_interactivity_data_wp_context( $context ) );
69 ?>
70 >
71 <a class="sc-product-item-link" href="<?php echo esc_url( get_the_permalink() ); ?>">
72 <?php echo $block_content; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?>
73 </a>
74 </form>
75 </li>
76 <?php endwhile; ?>
77 </ul>
78
79 <?php wp_reset_postdata(); ?>
80