41 lines
2.1 KiB
PHP
41 lines
2.1 KiB
PHP
<?php
|
||
declare(strict_types=1);
|
||
defined('ABSPATH') || exit;
|
||
|
||
add_action('wp_enqueue_scripts', 'xshop_enqueue_assets');
|
||
|
||
function xshop_enqueue_assets(): void {
|
||
$ver = defined('XSHOP_VERSION') ? XSHOP_VERSION : '1.0.0';
|
||
|
||
// Tokens → base → layout → components → woo → utilities → style.css
|
||
// Strategy: woo.css is intentionally global (12KB, replaces Woo's 3 stylesheets) to avoid FOUC on shop/product/cart/account.
|
||
// Conditional would save ~12KB on pure blog pages but adds complexity; keep global per ARCHITECTURE.md.
|
||
wp_enqueue_style('xshop-tokens', XSHOP_THEME_URI . '/assets/css/tokens.css', [], $ver);
|
||
wp_enqueue_style('xshop-base', XSHOP_THEME_URI . '/assets/css/base.css', ['xshop-tokens'], $ver);
|
||
wp_enqueue_style('xshop-layout', XSHOP_THEME_URI . '/assets/css/layout.css', ['xshop-base'], $ver);
|
||
wp_enqueue_style('xshop-components', XSHOP_THEME_URI . '/assets/css/components.css', ['xshop-layout'], $ver);
|
||
wp_enqueue_style('xshop-woo', XSHOP_THEME_URI . '/assets/css/woo.css', ['xshop-components'], $ver);
|
||
wp_enqueue_style('xshop-utilities', XSHOP_THEME_URI . '/assets/css/utilities.css', ['xshop-woo'], $ver);
|
||
wp_enqueue_style('xshop-style', get_stylesheet_uri(), ['xshop-utilities'], $ver);
|
||
wp_style_add_data('xshop-style', 'rtl', 'replace');
|
||
|
||
// Conditionally avoid WooCommerce styles on non-WC pages – WC styles already dequeued in inc/woocommerce/setup.php.
|
||
// Theme JS is tiny; feature modules conditionally enqueued elsewhere.
|
||
wp_enqueue_script('xshop', XSHOP_THEME_URI . '/assets/js/theme.js', [], $ver, true);
|
||
|
||
// Localized data for REST/AJAX (nonces, i18n hints).
|
||
wp_localize_script('xshop', 'xshopData', [
|
||
'restUrl' => esc_url_raw(rest_url('xshop/v1/')),
|
||
'nonce' => wp_create_nonce('wp_rest'),
|
||
'isRtl' => is_rtl(),
|
||
'i18n' => [
|
||
'searchPlaceholder' => esc_html__('Search products…', 'xshop'),
|
||
'noResults' => esc_html__('No results found.', 'xshop'),
|
||
],
|
||
]);
|
||
|
||
if (is_singular() && comments_open() && get_option('thread_comments')) {
|
||
wp_enqueue_script('comment-reply');
|
||
}
|
||
}
|