Created
December 10, 2022 23:04
-
-
Save artikus11/04037351eb26e91ad14cae099279d42c to your computer and use it in GitHub Desktop.
Подключение скриптов и стилей только на страницах WooCommerce
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* Подключение скриптов и стилей только на страницах WooCommerce | |
* | |
* @testedwith WooCommerce 7.0 | |
* @verphp 7.4 | |
* @author Artem Abramovich | |
*/ | |
function art_connection_css_js_only_woocommerce_pages() { | |
if ( ! class_exists( 'Woocommerce' ) ) { | |
return; | |
} | |
if ( is_admin() ) { | |
return; | |
} | |
global $post; | |
$parse_content = parse_blocks( $post->post_content ); | |
$blocks_name = array_filter( wp_list_pluck( $parse_content, 'blockName' ) ); | |
$wc_blocks_name = []; | |
foreach ( $blocks_name as $block_name ) { | |
if ( false !== strpos( $block_name, 'woocommerce' ) ) { | |
$wc_blocks_name[] = $block_name; | |
} | |
} | |
$has_wc_blocks = false; | |
if ( ! empty( $wc_blocks_name ) ) { | |
$has_wc_blocks = true; | |
} | |
$has_wc_shortcode_products = false; | |
if ( has_shortcode( $post->post_content, 'products' ) ) { | |
$has_wc_shortcode_products = true; | |
} | |
$enqueues = [ | |
'styles' => [ | |
'woocommerce-inline', | |
'photoswipe', | |
'photoswipe-default-skin', | |
'select2', | |
'woocommerce_prettyPhoto_css', | |
'woocommerce-layout', | |
'woocommerce-smallscreen', | |
'woocommerce-general', | |
'wc-blocks-vendors-style', | |
'wc-blocks-style', | |
], | |
'scripts' => [ | |
'flexslider', | |
'js-cookie', | |
'jquery-blockui', | |
'jquery-cookie', | |
'jquery-payment', | |
'photoswipe', | |
'photoswipe-ui-default', | |
'prettyPhoto', | |
'prettyPhoto-init', | |
'select2', | |
'selectWoo', | |
'wc-address-i18n', | |
'wc-add-payment-method', | |
'wc-cart', | |
'wc-cart-fragments', | |
'wc-checkout', | |
'wc-country-select', | |
'wc-credit-card-form', | |
'wc-add-to-cart', | |
'wc-add-to-cart-variation', | |
'wc-geolocation', | |
'wc-lost-password', | |
'wc-password-strength-meter', | |
'wc-single-product', | |
'woocommerce', | |
'zoom', | |
'wc-blocks-middleware', | |
'wc-blocks', | |
'wc-blocks-registry', | |
'wc-vendors', | |
'wc-shared-context', | |
'wc-shared-hocs', | |
'wc-price-format', | |
'wc-active-filters-block-frontend', | |
'wc-stock-filter-block-frontend', | |
'wc-attribute-filter-block-frontend', | |
'wc-price-filter-block-frontend', | |
'wc-reviews-block-frontend', | |
'wc-all-products-block-frontend', | |
], | |
]; | |
if ( is_product() ) { | |
unset( | |
$enqueues['scripts'][ array_search( 'jquery-blockui', $enqueues['scripts'], true ) ], | |
$enqueues['scripts'][ array_search( 'wc-single-product', $enqueues['scripts'], true ) ], | |
$enqueues['scripts'][ array_search( 'flexslider', $enqueues['scripts'], true ) ], | |
$enqueues['scripts'][ array_search( 'photoswipe', $enqueues['scripts'], true ) ], | |
$enqueues['scripts'][ array_search( 'zoom', $enqueues['scripts'], true ) ], | |
$enqueues['scripts'][ array_search( 'prettyPhoto', $enqueues['scripts'], true ) ], | |
$enqueues['scripts'][ array_search( 'prettyPhoto-init', $enqueues['scripts'], true ) ], | |
$enqueues['scripts'][ array_search( 'photoswipe-ui-default', $enqueues['scripts'], true ) ], | |
$enqueues['styles'][ array_search( 'photoswipe', $enqueues['styles'], true ) ], | |
$enqueues['styles'][ array_search( 'photoswipe-default-skin', $enqueues['styles'], true ) ], | |
$enqueues['styles'][ array_search( 'woocommerce_prettyPhoto_css', $enqueues['styles'], true ) ] | |
); | |
} | |
if ( is_woocommerce() || is_product_category() || is_product_tag() || $has_wc_blocks || $has_wc_shortcode_products ) { | |
unset( | |
$enqueues['scripts'][ array_search( 'woocommerce', $enqueues['scripts'], true ) ], | |
$enqueues['scripts'][ array_search( 'wc-add-to-cart', $enqueues['scripts'], true ) ], | |
$enqueues['scripts'][ array_search( 'wc-cart-fragments', $enqueues['scripts'], true ) ] | |
); | |
} | |
if ( is_cart() || is_checkout() ) { | |
unset( | |
$enqueues['scripts'][ array_search( 'wc-add-to-cart', $enqueues['scripts'], true ) ], | |
$enqueues['scripts'][ array_search( 'wc-checkout', $enqueues['scripts'], true ) ], | |
$enqueues['scripts'][ array_search( 'wc-cart', $enqueues['scripts'], true ) ], | |
$enqueues['scripts'][ array_search( 'wc-cart-fragments', $enqueues['scripts'], true ) ], | |
$enqueues['scripts'][ array_search( 'wc-country-select', $enqueues['scripts'], true ) ], | |
$enqueues['scripts'][ array_search( 'select2', $enqueues['scripts'], true ) ], | |
$enqueues['scripts'][ array_search( 'selectWoo', $enqueues['scripts'], true ) ], | |
$enqueues['styles'][ array_search( 'select2', $enqueues['styles'], true ) ] | |
); | |
} | |
if ( is_account_page() ) { | |
unset( | |
$enqueues['scripts'][ array_search( 'wc-country-select', $enqueues['scripts'], true ) ], | |
$enqueues['scripts'][ array_search( 'select2', $enqueues['scripts'], true ) ], | |
$enqueues['scripts'][ array_search( 'selectWoo', $enqueues['scripts'], true ) ], | |
$enqueues['styles'][ array_search( 'select2', $enqueues['styles'], true ) ] | |
); | |
} | |
foreach ( $enqueues as $key => $enqueue ) { | |
if ( 'scripts' === $key ) { | |
foreach ( $enqueue as $item ) { | |
wp_dequeue_script( $item ); | |
} | |
} | |
if ( 'styles' === $key ) { | |
foreach ( $enqueue as $item ) { | |
wp_dequeue_style( $item ); | |
} | |
} | |
} | |
} | |
add_action( 'wp_enqueue_scripts', 'art_connection_css_js_only_woocommerce_pages', 999 ); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Подключение скриптов и стилей только на страницах WooCommerce