<?php
/**
 * Optimizaciones WordPress + Elementor + WooCommerce
 */

/* Quitar Dashicons para visitantes */
add_action('wp_enqueue_scripts', function () {
    if (!is_user_logged_in()) {
        wp_dequeue_style('dashicons');
    }
}, 100);

/* Quitar CSS Gutenberg si no usas bloques */
add_action('wp_enqueue_scripts', function () {
    wp_dequeue_style('wp-block-library');
    wp_dequeue_style('wp-block-library-theme');
    wp_dequeue_style('global-styles');
    wp_dequeue_style('classic-theme-styles');
}, 100);

/* Quitar jQuery Migrate en frontend */
add_action('wp_default_scripts', function ($scripts) {
    if (is_admin()) return;

    if (isset($scripts->registered['jquery'])) {
        $scripts->registered['jquery']->deps = array_diff(
            $scripts->registered['jquery']->deps,
            ['jquery-migrate']
        );
    }
});

/* Optimizar WooCommerce fuera de páginas necesarias */
add_action('wp_enqueue_scripts', function () {
    if (is_admin() || !class_exists('WooCommerce')) return;

    if (
        !is_woocommerce() &&
        !is_cart() &&
        !is_checkout() &&
        !is_account_page()
    ) {
        wp_dequeue_style('woocommerce-layout');
        wp_dequeue_style('woocommerce-smallscreen');
        wp_dequeue_style('woocommerce-general');

        wp_dequeue_script('wc-cart-fragments');
        wp_dequeue_script('woocommerce');
        wp_dequeue_script('wc-add-to-cart');
    }
}, 99);

/* Eliminar Emojis de WordPress */
remove_action('wp_head', 'print_emoji_detection_script', 7);
remove_action('wp_print_styles', 'print_emoji_styles');
remove_action('admin_print_scripts', 'print_emoji_detection_script');
remove_action('admin_print_styles', 'print_emoji_styles');

/* Quitar Embed JS */
add_action('wp_enqueue_scripts', function () {
    wp_dequeue_script('wp-embed');
}, 100);

/* Diferir JS no crítico */
add_filter('script_loader_tag', function ($tag, $handle, $src) {

    if (is_admin()) return $tag;

    $exclude = [
        'jquery',
        'jquery-core',
        'elementor-frontend',
        'elementor-pro-frontend',
        'wc-cart-fragments',
        'woocommerce',
        'wc-cart',
        'wc-checkout',
        'wc-add-to-cart',
    ];

    if (in_array($handle, $exclude, true)) {
        return $tag;
    }

    if (strpos($tag, ' defer') === false) {
        $tag = str_replace(' src', ' defer src', $tag);
    }

    return $tag;

}, 10, 3);