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