array(), 'version' => ADDIFECT_RENDER_ENGINE_VERSION, ); // 4. Enqueue Assets wp_enqueue_script( 'addifect-studio-vendors', addifect_get_url( 'studio-vendors' ), $vendor_asset['dependencies'], $vendor_asset['version'], true ); $studio_asset_path = ADDIFECT_PLUGIN_PATH . 'assets/studio/js/index.asset.php'; $studio_asset = file_exists( $studio_asset_path ) ? include $studio_asset_path : array( 'dependencies' => array(), 'version' => ADDIFECT_RENDER_ENGINE_VERSION, ); wp_enqueue_script( 'addifect-studio', addifect_get_url( 'studio' ), $studio_asset['dependencies'], $studio_asset['version'], true ); wp_localize_script( 'addifect-studio', 'addifectStudio', array( 'root' => esc_url_raw( rest_url() ), 'nonce' => wp_create_nonce( 'wp_rest' ), 'base' => home_url( '/__addifect/studio/' ), 'path' => ADDIFECT_PLUGIN_URL . 'assets/studio/js/', 'home' => home_url(), 'pluginUrl' => ADDIFECT_PLUGIN_URL, ) ); } add_action( 'wp_enqueue_scripts', 'addifect_enqueue_studio_assets' ); /** * Wipe external assets. * High priority ensures we run after other plugins enqueue their styles/scripts. */ add_action( 'wp_enqueue_scripts', function () { if ( ! get_query_var( 'addifect_studio' ) ) { return; } global $wp_scripts, $wp_styles; // 1. Identify what we MUST keep. $core_handles = array( 'addifect-studio', 'addifect-studio-vendors' ); $keep_handles = apply_filters( 'addifect_keep_asset_handles', $core_handles ); // 2. Automatically include dependencies of our kept scripts. // This ensures React, API-fetch, etc., are not accidentally nuked. foreach ( $keep_handles as $handle ) { if ( isset( $wp_scripts->registered[ $handle ] ) ) { $keep_handles = array_merge( $keep_handles, $wp_scripts->registered[ $handle ]->deps ); } } // 3. Dequeue everything else. foreach ( $wp_scripts->queue as $handle ) { if ( ! in_array( $handle, $keep_handles, true ) ) { wp_dequeue_script( $handle ); } } foreach ( $wp_styles->queue as $handle ) { if ( ! in_array( $handle, $keep_handles, true ) ) { wp_dequeue_style( $handle ); } } }, 9999 );