PluginProbe ʕ •ᴥ•ʔ
SureCart – Ecommerce Made Easy For Selling Physical Products, Digital Downloads, Subscriptions, Donations, & Payments / 3.0.0-beta2
SureCart – Ecommerce Made Easy For Selling Physical Products, Digital Downloads, Subscriptions, Donations, & Payments v3.0.0-beta2
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 / app / src / WordPress / CompatibilityService.php
surecart / app / src / WordPress Last commit date
Admin 1 year ago Assets 1 year ago CLI 2 years ago Pages 1 year ago PostTypes 1 year ago Posts 1 year ago Shortcodes 1 year ago Taxonomies 1 year ago Templates 1 year ago Users 2 years ago ActionsService.php 4 years ago CompatibilityService.php 1 year ago HealthService.php 2 years ago LineItemStateService.php 2 years ago PluginService.php 3 years ago PluginServiceProvider.php 1 year ago RecaptchaValidationService.php 2 years ago StateService.php 2 years ago ThemeService.php 2 years ago ThemeServiceProvider.php 3 years ago TranslationsServiceProvider.php 1 year ago
CompatibilityService.php
179 lines
1 <?php
2 /**
3 * Compatibility service.
4 *
5 * @package SureCartAppCore
6 * @author SureCart <support@surecart.com>
7 * @copyright SureCart
8 * @license https://www.gnu.org/licenses/gpl-2.0.html GPL-2.0
9 * @link https://surecart.com
10 */
11
12 namespace SureCart\WordPress;
13
14 use SureCart\WordPress\Admin\Notices\AdminNoticesService;
15
16 /**
17 * Provides compatibility with other plugins.
18 */
19 class CompatibilityService {
20 /**
21 * Bootstrap the service.
22 *
23 * @return void
24 */
25 public function bootstrap() {
26 // UAG fix.
27 add_action( 'render_block_data', [ $this, 'maybeEnqueueUAGBAssets' ] );
28 // SC Form Shortcode fix.
29 add_filter( 'surecart/shortcode/render', [ $this, 'maybeEnqueueUAGBAssetsForShortcode' ], 5, 3 );
30 // rankmath fix.
31 add_action( 'rank_math/head', [ $this, 'rankMathFix' ] );
32
33 // Yoast SEO fix.
34 add_action( 'wpseo_frontend_presenters', [ $this, 'yoastSEOFix' ] );
35
36 // Show gutenberg active notice.
37 add_action( 'admin_init', [ $this, 'gutenbergActiveNotice' ] );
38
39 // Load Divi Compatibility CSS.
40 add_action( 'wp_enqueue_scripts', [ $this, 'diviCompatibility' ] );
41
42 // Load Blocks Global Styles if enabled by Merchant in the setting.
43 if ( (bool) get_option( 'surecart_load_block_assets_on_demand', false ) ) {
44 add_filter( 'should_load_separate_core_block_assets', '__return_true' );
45 }
46 }
47
48 /**
49 * Load Divi Compatibility CSS.
50 *
51 * @return void
52 */
53 public function diviCompatibility() {
54 if ( ! is_plugin_active( 'divi-builder/divi-builder.php' ) ) {
55 return;
56 }
57 wp_enqueue_style( 'surecart-divi-compatibility', plugins_url( 'styles/divi-compatibility.css', SURECART_PLUGIN_FILE ), '', \SureCart::plugin()->version(), 'all' );
58 }
59
60 /** Prevent Yoast SEO from outputing SEO meta tags on our custom pages.
61 *
62 * @param array $presenters Presenters.
63 * @return array Empty Array.
64 */
65 public function yoastSEOFix( $presenters ) {
66 if ( is_singular( 'sc_product' ) || is_singular( 'sc_collection' ) || is_singular( 'sc_upsell' ) ) {
67 $title_presenters = array_filter(
68 $presenters,
69 function ( $item ) {
70 return strpos( get_class( $item ), 'SEO\Presenters\Title_Presenter' );
71 }
72 );
73 return apply_filters( 'sc_wpseo_frontend_presenters', $title_presenters, $presenters );
74 }
75
76 return $presenters;
77 }
78
79 /**
80 * Prevent rankmath from outputting og:tags on our custom pages.
81 *
82 * @return void
83 */
84 public function rankMathFix() {
85 if ( is_singular( 'sc_product' ) || is_singular( 'sc_collection' ) || is_singular( 'sc_upsell' ) ) {
86 remove_all_actions( 'rank_math/opengraph/facebook' );
87 remove_all_actions( 'rank_math/opengraph/twitter' );
88 }
89 }
90
91 /**
92 * Render block data.
93 *
94 * @param array $parsed_block Block data.
95 *
96 * @return array
97 */
98 public function maybeEnqueueUAGBAssets( $parsed_block ) {
99 // UAGB must be activated.
100 if ( ! class_exists( '\UAGB_Post_Assets' ) ) {
101 return $parsed_block;
102 }
103
104 // must be our checkout form block.
105 if ( 'surecart/checkout-form' !== $parsed_block['blockName'] && 'surecart/upsell' !== $parsed_block['blockName'] ) {
106 return $parsed_block;
107 }
108
109 $post = get_post();
110 $upsell_id = isset( $post->upsell->id ) ? $post->upsell->id : null;
111
112 $id = $parsed_block['attrs']['id'] ?? $upsell_id;
113
114 if ( empty( $id ) ) {
115 return $parsed_block;
116 }
117
118 // If Spectra Blocks are present in the form, enqueue the assets.
119 $post_assets_instance = new \UAGB_Post_Assets( $id );
120 $post_assets_instance->enqueue_scripts(); // This will enqueue the JS and CSS files.
121
122 if ( ! empty( $post_assets_instance->file_generation ) && 'disabled' === $post_assets_instance->file_generation ) {
123 add_action( 'wp_footer', array( $post_assets_instance, 'print_stylesheet' ) ); // As on checkout page, the wp_head action is loaded late & Spectra prints inline CSS on that action for file_generation disabled case, we need to print the CSS on footer.
124 }
125
126 return $parsed_block;
127 }
128
129 /**
130 * Filter SC Form Shortcode to load the Spectra Blocks Assets.
131 *
132 * @param string $output Content.
133 * @param array $attributes Shortcode attributes.
134 * @param string $name Shortcode Tag.
135 *
136 * @return array
137 */
138 public function maybeEnqueueUAGBAssetsForShortcode( $output, $attributes, $name ) {
139 // UAGB must be activated.
140 if ( ! class_exists( '\UAGB_Post_Assets' ) ) {
141 return $output;
142 }
143
144 // must be our form shortcode.
145 if ( 'sc_form' !== $name ) {
146 return $output;
147 }
148
149 // must have an ID.
150 if ( empty( $attributes['id'] ) ) {
151 return $output;
152 }
153
154 // If Spectra Blocks are present in the form, enqueue the assets.
155 $post_assets_instance = new \UAGB_Post_Assets( $attributes['id'] );
156 $post_assets_instance->enqueue_scripts();
157
158 return $output;
159 }
160
161 /**
162 * Show the Gutenberg active notice.
163 *
164 * @return void
165 */
166 public function gutenbergActiveNotice(): void {
167 if ( is_plugin_active( 'gutenberg/gutenberg.php' ) ) {
168 ( new AdminNoticesService() )->add(
169 [
170 'name' => 'gutenberg_active_notice',
171 'type' => 'warning',
172 'title' => esc_html__( 'SureCart', 'surecart' ),
173 'text' => wp_kses_post( __( '<p>The Gutenberg plugin is currently active. SureCart blocks might not perform as expected within the block editor. If you encounter any issues, consider disabling the Gutenberg plugin.<p>', 'surecart' ) ),
174 ]
175 );
176 }
177 }
178 }
179