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 / ElementorShortcodeService.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
ElementorShortcodeService.php
83 lines
1 <?php
2
3 namespace SureCart\Integrations\Elementor;
4
5 /**
6 * Elementor shortcode service.
7 * Handles the wrapping of SureCart shortcodes in the Elementor content.
8 */
9 class ElementorShortcodeService {
10 /**
11 * Should wrap.
12 *
13 * @var bool
14 */
15 protected $should_wrap = false;
16
17 /**
18 * Bootstrap the service.
19 *
20 * @return void
21 */
22 public function bootstrap() {
23 add_action( 'elementor/frontend/before_get_builder_content', array( $this, 'wrapShortcodesInProductWrapper' ) );
24 }
25
26 /**
27 * Wrap shortcodes in product wrapper.
28 *
29 * @param \Elementor\Document $document The Elementor document.
30 *
31 * @return \Elementor\Document
32 */
33 public function wrapShortcodesInProductWrapper( $document ) {
34 $sc_shortcodes = $this->findSurecartShortcodes( $document->get_elements_data() );
35
36 if ( ! empty( $sc_shortcodes ) ) {
37 add_filter(
38 'elementor/frontend/the_content',
39 function ( $content ) {
40 if ( empty( sc_get_product() ) ) {
41 return $content;
42 }
43 return '<!-- wp:surecart/product-page {"align":"wide"} -->' . $content . '<!-- /wp:surecart/product-page -->';
44 },
45 9 // this is important to run this filter at the end of the content.
46 );
47 }
48 return $document;
49 }
50
51 /**
52 * Find all SureCart shortcodes in the Elementor data.
53 *
54 * @param array $elements The elements data to search through.
55 * @param array $found_shortcodes Array to store found shortcodes.
56 *
57 * @return array Found shortcodes.
58 */
59 private function findSurecartShortcodes( $elements, &$found_shortcodes = [] ) {
60 if ( ! is_array( $elements ) ) {
61 return $found_shortcodes;
62 }
63
64 foreach ( $elements as $element ) {
65 // Check if this is a widget with a shortcode.
66 if ( isset( $element['widgetType'] ) &&
67 'shortcode' === $element['widgetType'] &&
68 isset( $element['settings']['shortcode'] ) &&
69 0 === strpos( $element['settings']['shortcode'], '[sc_' )
70 ) {
71 $found_shortcodes[] = $element['settings']['shortcode'];
72 }
73
74 // Recursively search through nested elements.
75 if ( isset( $element['elements'] ) && is_array( $element['elements'] ) ) {
76 $this->findSurecartShortcodes( $element['elements'], $found_shortcodes );
77 }
78 }
79
80 return $found_shortcodes;
81 }
82 }
83