PluginProbe ʕ •ᴥ•ʔ
SureCart – Ecommerce Made Easy For Selling Physical Products, Digital Downloads, Subscriptions, Donations, & Payments / 4.5.0
SureCart – Ecommerce Made Easy For Selling Physical Products, Digital Downloads, Subscriptions, Donations, & Payments v4.5.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 / app / src / Integrations / Elementor / ElementorFseScriptLoaderService.php
surecart / app / src / Integrations / Elementor Last commit date
Conditions 1 year ago Documents 1 year ago DynamicTags 4 months ago Widgets 2 months ago assets 4 months ago ElementorBlockAdapterService.php 4 months ago ElementorCoreBlockStylesService.php 1 year ago ElementorDocumentsService.php 1 year ago ElementorDynamicTagsService.php 1 year ago ElementorEditorService.php 1 year ago ElementorFseScriptLoaderService.php 1 year ago ElementorServiceProvider.php 8 months ago ElementorShortcodeService.php 1 year ago ElementorTemplatesService.php 4 months ago ElementorWidgetsService.php 8 months ago
ElementorFseScriptLoaderService.php
95 lines
1 <?php
2
3 namespace SureCart\Integrations\Elementor;
4
5 /**
6 * Class to handle FSE script loading for Elementor integration.
7 */
8 class ElementorFseScriptLoaderService {
9 /**
10 * Bootstrap the service.
11 *
12 * @return void
13 */
14 public function bootstrap() {
15 if ( ! \SureCart::utility()->blockTemplates()->isFSETheme() ) {
16 return;
17 }
18
19 add_filter( 'template_include', [ $this, 'maybePreloadProductScripts' ], 999 );
20 }
21
22 /**
23 * Check if the current template might be a product page
24 *
25 * @param string $template The template being loaded.
26 * @return string The template path unchanged.
27 */
28 public function maybePreloadProductScripts( $template ) {
29 if ( empty( $template ) || ! $this->isProductPage() ) {
30 return $template;
31 }
32
33 add_action( 'wp_enqueue_scripts', [ $this, 'loadElementorAssetsForProductTemplate' ], 9 );
34 return $template;
35 }
36
37 /**
38 * Determine if the current page is a surecart product page.
39 *
40 * @return bool True if this page contains product elements.
41 */
42 private function isProductPage(): bool {
43 global $post;
44 if ( ! $post ) {
45 return false;
46 }
47
48 // Check if the current post is a product post type or if the query variable indicates a product.
49 return get_query_var( 'surecart_current_product' ) || 'sc_product' === $post->post_type;
50 }
51
52 /**
53 * Force load Elementor scripts for SureCart product templates.
54 *
55 * @return void
56 */
57 public function loadElementorAssetsForProductTemplate(): void {
58 $template_id = $this->get_surecart_elementor_template_id();
59 if ( ! $template_id ) {
60 return;
61 }
62
63 $document = \Elementor\Plugin::$instance->documents->get( $template_id );
64 if ( ! $document || ! $document->is_built_with_elementor() ) {
65 return;
66 }
67
68 $elementor_frontend = \Elementor\Plugin::instance()->frontend;
69 $elementor_frontend->enqueue_scripts();
70 $elementor_frontend->get_builder_content_for_display( $template_id );
71 }
72
73 /**
74 * Get the SureCart Elementor template ID.
75 *
76 * @return int|null The ID of the SureCart Elementor template or null if not found.
77 */
78 private function get_surecart_elementor_template_id() {
79 $query = new \WP_Query(
80 [
81 'post_type' => 'elementor_library',
82 'meta_query' => [
83 [
84 'key' => '_elementor_template_type',
85 'value' => 'surecart-product',
86 ],
87 ],
88 'posts_per_page' => 1,
89 ]
90 );
91
92 return $query->have_posts() ? $query->posts[0]->ID : null;
93 }
94 }
95