WordPress.org

Make WordPress Core

Ticket #3372: combine.php

File combine.php, 2.4 KB (added by DD32, 7 years ago)
Line 
1<?php
2/*
3Plugin Name: The Combiner
4Plugin URI: http://dd32.id.au/wordpress-plugins/?plugin=combine-css-js
5Description: Combine CSS & JS into one large monolithic file
6Author: DD32
7Version: 1.0
8Author URI: http://dd32.id.au/
9*/
10
11add_action('admin_init', 'combine_init');
12function combine_init() {
13        //Handler
14        add_action('admin_post_css', 'combine_css');
15        add_action('admin_post_js', 'combine_js');
16       
17        //Styles
18        //remove_action('wp_head', 'wp_print_styles', 9); //non-admin
19        remove_action('admin_print_styles', 'wp_print_styles', 20);
20        //add_action('wp_head', 'combine_css_link');//non-admin
21        add_action('admin_print_styles', 'combine_css_link', 20);
22       
23        //Scripts
24        //remove_action('wp_head', 'wp_print_scripts', 9); //non-admin
25        remove_action('admin_print_scripts', 'wp_print_scripts', 20);
26        //add_action('wp_head', 'combine_js_link'); //non-admin
27        add_action('admin_print_scripts', 'combine_js_link', 20);
28}
29
30function combine_css() {
31        global $wp_styles;
32        if ( !is_a($wp_styles, 'WP_Styles') )
33                $wp_styles = new WP_Styles();
34
35        header('content-type: text/css; charset: UTF-8');
36
37        $content = '';
38        foreach ( (array)$wp_styles->registered as $style ) {
39                if ( file_exists(ABSPATH . $style->src) ) 
40                        $content .= file_get_contents(ABSPATH . $style->src);
41                $content .= "\n\n";
42        }
43        echo $content;
44}
45
46function combine_css_link() {
47        echo '<link rel="stylesheet" type="text/css" media="all" href="' . admin_url('admin-post.php?action=css' . (is_admin() ? '&admin=true' : '') ) . '" />' . "\n";
48}
49
50function combine_js() {
51        global $wp_scripts;
52        if ( !is_a($wp_scripts, 'WP_Scripts') )
53                $wp_scripts = new WP_Scripts();
54
55        header("content-type: text/javascript; charset: UTF-8");
56       
57        $content = '';
58        foreach ( (array)$wp_scripts->registered as $script ) {
59                if ( file_exists(ABSPATH . $script->src) )
60                        $content .= file_get_contents(ABSPATH . $script->src) . "\n\n";
61                if ( isset($script->extra['l10n']) ) {
62                        $object_name = $script->extra['l10n'][0];
63       
64                        $content .= "\t$object_name = {\n";
65                        $eol = '';
66                        foreach ( $script->extra['l10n'][1] as $var => $val ) {
67                                $content .= "$eol\t\t$var: \"" . js_escape( $val ) . '"';
68                                $eol = ",\n";
69                        }
70                        $content .= "\n\t}\n\n";
71                }
72        }
73        echo $content;
74}
75
76function combine_js_link() {
77        echo '<script type="text/javascript" src="' . admin_url('admin-post.php?action=js' . (is_admin() ? '&admin=true' : '') ) . '"></script>' . "\n";
78}
79?>