compile_enqueued( 'style' ) ) beans_compile_css_fragments( 'beans', $styles, array( 'version' => null ) ); } /** * Enqueue compiled wp scripts. */ public function compile_page_scripts() { if ( !beans_get_component_support( 'wp_scripts_compiler' ) || !get_option( 'beans_compile_all_scripts', false ) || _beans_is_compiler_dev_mode() ) return; if ( $scripts = $this->compile_enqueued( 'script' ) ) beans_compile_js_fragments( 'beans', $scripts, array( 'in_footer' => ( 'aggressive' === get_option( 'beans_compile_all_scripts_mode', 'aggressive' ) ) ? true : false, 'version' => null ) ); } /** * Compile all wp enqueued assets. */ private function compile_enqueued( $type, $depedencies = false ) { $set_global = 'wp_' . $type . 's'; $set_dequeued_global = 'beans_dequeue_' . $type . 's'; global $$set_global; if ( $type == 'script' ) add_action( 'wp_print_scripts', array( $this, 'dequeue_scripts' ), 9999 ); if ( !$depedencies ) $depedencies = $$set_global->queue; $fragments = array(); foreach ( $depedencies as $id ) { // Don't compile admin bar assets. if ( in_array( $id, array( 'admin-bar', 'open-sans', 'dashicons' ) ) ) continue; if ( !$args = beans_get( $id, $$set_global->registered ) ) continue; if ( $args->deps ) foreach ( $this->compile_enqueued( $type, $args->deps ) as $dep_id => $dep_src ) if ( !empty( $dep_src ) ) $fragments[$dep_id] = $dep_src; if ( $type == 'style' ) { // Add compiler media query if set. if ( $args->args != 'all' ) $args->src = add_query_arg( array( 'beans_compiler_media_query' => $args->args ), $args->src ); wp_dequeue_style( $id ); } elseif ( $type == 'script' ) { $this->dequeued_scripts[$id] = $args->src; } $fragments[$id] = $args->src; } return $fragments; } /** * Dequeue scripts which have been compiled, grab localized * data and add it inline. */ public function dequeue_scripts() { global $wp_scripts; if ( empty( $this->dequeued_scripts ) ) return; $localized = ''; // Fetch the localized content and dequeue script. foreach ( $this->dequeued_scripts as $id => $src ) { if ( !$args = beans_get( $id, $wp_scripts->registered ) ) continue; if ( isset( $args->extra['data'] ) ) $localized .= $args->extra['data'] . "\n"; wp_dequeue_script( $id ); } // Stop here if there isn't any content to add. if ( empty( $localized ) ) return; // Add localized content since it was removed with dequeue scripts. echo ''; } } new _Beans_Page_Compiler();