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
ElementorCoreBlockStylesService.php
73 lines
| 1 | <?php |
| 2 | |
| 3 | namespace SureCart\Integrations\Elementor; |
| 4 | |
| 5 | /** |
| 6 | * Elementor core block styles service. |
| 7 | * This service is responsible for enqueuing core block styles for our product page |
| 8 | * as Elementor dequeues them in certain cases resulting in broken styles. |
| 9 | */ |
| 10 | class ElementorCoreBlockStylesService { |
| 11 | /** |
| 12 | * Whether core block styles are enqueued. |
| 13 | * |
| 14 | * @var array |
| 15 | */ |
| 16 | protected $enqueued = [ |
| 17 | 'wp-block-library' => false, |
| 18 | 'wp-block-library-theme' => false, |
| 19 | ]; |
| 20 | |
| 21 | /** |
| 22 | * Bootstrap the service. |
| 23 | * |
| 24 | * @return void |
| 25 | */ |
| 26 | public function bootstrap() { |
| 27 | // check if core block styles are (should be)enqueued. |
| 28 | add_action( 'wp_enqueue_scripts', [ $this, 'areCoreBlockStylesEnqueued' ], 900 ); |
| 29 | // enqueue core block styles if they have been dequeued for our product page. |
| 30 | add_action( 'wp_enqueue_scripts', [ $this, 'maybeEnqueueCoreBlockStyles' ], 9999 ); |
| 31 | } |
| 32 | |
| 33 | /** |
| 34 | * Check if core block styles are originally enqueued. |
| 35 | * That way we know if we need to re-enqueue them. |
| 36 | * |
| 37 | * @return void |
| 38 | */ |
| 39 | public function areCoreBlockStylesEnqueued() { |
| 40 | $this->enqueued = [ |
| 41 | 'wp-block-library' => wp_style_is( 'wp-block-library', 'enqueued' ), |
| 42 | 'wp-block-library-theme' => wp_style_is( 'wp-block-library-theme', 'enqueued' ), |
| 43 | ]; |
| 44 | } |
| 45 | |
| 46 | /** |
| 47 | * Maybe enqueue core block styles. |
| 48 | * |
| 49 | * @return void |
| 50 | */ |
| 51 | public function maybeEnqueueCoreBlockStyles() { |
| 52 | // separate core block assets are not loaded, so don't enqueue. |
| 53 | if ( wp_should_load_separate_core_block_assets() ) { |
| 54 | return; |
| 55 | } |
| 56 | |
| 57 | // not a product, so don't enqueue. |
| 58 | if ( 'sc_product' !== get_post_type() ) { |
| 59 | return; |
| 60 | } |
| 61 | |
| 62 | // not originally enqueued, so don't enqueue. |
| 63 | if ( $this->enqueued['wp-block-library'] ) { |
| 64 | wp_enqueue_style( 'wp-block-library' ); |
| 65 | } |
| 66 | |
| 67 | // enqueue the theme block library if it's not already enqueued. |
| 68 | if ( $this->enqueued['wp-block-library-theme'] ) { |
| 69 | wp_enqueue_style( 'wp-block-library-theme' ); |
| 70 | } |
| 71 | } |
| 72 | } |
| 73 |