add_action('admin_enqueue_scripts','load_deferred_admin_script');function load_deferred_admin_script($hook){// Highly recommended:Only load it where needed to ensure dashboard speed // if ('settings_page_my-plugin' !==$hook) return;wp_enqueue_script('my-admin-js',// Script unique handle plugins_url('js/admin-script.js',__FILE__),// Path to your file array('jquery'),// Dependencies '1.0.0',// Script version number array('strategy'=>'defer',// Native injection for WP 6.3 through 7.1.2+'in_footer'=>true // Delays execution and boosts perceived performance))}add_action('wp_enqueue_scripts','conditionally_dequeue_wpforms_assets',999);function conditionally_dequeue_wpforms_assets(){// Avoid running this inside the admin dashboard or on form submission endpoints if (is_admin()){return}// Define the specific page slugs or IDs where your forms actually live // Example:Only load on 'contact' and 'get-a-quote' pages $form_pages=array('contact','get-a-quote',123);if (!is_page($form_pages)){// Dequeue Frontend JavaScript files wp_dequeue_script('wpforms-js');wp_dequeue_script('wpforms-validation');wp_dequeue_script('wpforms-smart-phone-field');// Dequeue Frontend CSS Styling wp_dequeue_style('wpforms-full');wp_dequeue_style('wpforms-base')}}add_action('wp_enqueue_scripts','purge_unused_blog_carousels',999);function purge_unused_blog_carousels(){// Target the blog archive page layout exclusively if (is_home() || is_archive() || is_permalink_page_slug('blogs')){// --- Library 1:Slick Carousel (Commonly bundled in themes/builders) --- wp_dequeue_script('slick');wp_dequeue_script('slick-js');wp_dequeue_style('slick');wp_dequeue_style('slick-theme');// --- Library 2:Owl Carousel or Splide (Common duplicates) --- wp_dequeue_script('owl-carousel');wp_dequeue_script('owl-js');wp_dequeue_style('owl-carousel');wp_dequeue_style('owl-theme');wp_dequeue_script('splide');wp_dequeue_style('splide');// --- Core Elementor / Page Builder Carousel Modules (If applicable) --- wp_dequeue_script('elementor-slides');wp_dequeue_script('swiper');// Dequeue only if blog elements aren't using Swiper
    }
}

// Helper block to catch exact URL matches if standard wrappers fail
function is_permalink_page_slug($slug) {
    global $wp;
    return (home_url(/wp-content/themes/pivotal-child/$wp->request) == home_url(/wp-content/themes/pivotal-child/$slug));
}

add_action('wp_enqueue_scripts', 'purge_legacy_pivotal_theme_scripts', 9999);

function purge_legacy_pivotal_theme_scripts() {
    // 1. --- FEATURE DETECTION PURGE ---
    // Drops Modernizr or HTML5 shims which modern browsers no longer require
    wp_dequeue_script('modernizr');
    wp_deregister_script('modernizr');
    wp_dequeue_script('html5shiv');
    wp_deregister_script('html5shiv');

    // 2. --- ANIMATION LIBRARIES PURGE ---
    // Drops old scroll/viewport script dependencies
    wp_dequeue_script('wow');
    wp_deregister_script('wow');
    wp_dequeue_script('waypoints');
    wp_deregister_script('waypoints');
    
    // Drops theme-bundled custom initialization scripts for animations
    wp_dequeue_script('pivotal-animation'); 
    wp_dequeue_script('pivotal-custom');

    // 3. --- LEGACY LAYOUT / INTERACTION PURGE ---
    // Drops legacy window-matching scripts
    wp_dequeue_script('respond');
    wp_deregister_script('respond');
}

/**
 * Fix invalid robots.txt: WPForms (or another plugin) adds a bare
 * "Disallow: /wp-content/uploads/wpforms/" line with no preceding
 * "User-agent:" directive, which fails robots.txt validation.
 */
add_filter( 'robots_txt', 'pa_fix_robots_txt_syntax', 99, 2 );
function pa_fix_robots_txt_syntax( $output, $public ) {
	$lines = preg_split( '/\r\n|\r|\n/', trim( $output ) );
	$fixed = array();
	$has_seen_user_agent = false;

	foreach ( $lines as $line ) {
		$trimmed = trim( $line );

		if ( stripos( $trimmed, 'user-agent:' ) === 0 ) {
			$has_seen_user_agent = true;
		}

		// A Disallow/Allow line appearing before any User-agent is invalid syntax.
		if ( ! $has_seen_user_agent && preg_match( '/^(disallow|allow):/i', $trimmed ) ) {
			$fixed[] = 'User-agent:*';$has_seen_user_agent=true}$fixed[]=$line}return implode("\n",$fixed) . "\n"}