load-scripts.php 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. <?php
  2. /**
  3. * Disable error reporting
  4. *
  5. * Set this to error_reporting( -1 ) for debugging.
  6. */
  7. error_reporting(0);
  8. /** Set ABSPATH for execution */
  9. if ( ! defined( 'ABSPATH' ) ) {
  10. define( 'ABSPATH', dirname( dirname( __FILE__ ) ) . '/' );
  11. }
  12. define( 'WPINC', 'wp-includes' );
  13. $load = $_GET['load'];
  14. if ( is_array( $load ) )
  15. $load = implode( '', $load );
  16. $load = preg_replace( '/[^a-z0-9,_-]+/i', '', $load );
  17. $load = array_unique( explode( ',', $load ) );
  18. if ( empty($load) )
  19. exit;
  20. require( ABSPATH . 'wp-admin/includes/noop.php' );
  21. require( ABSPATH . WPINC . '/script-loader.php' );
  22. require( ABSPATH . WPINC . '/version.php' );
  23. $expires_offset = 31536000; // 1 year
  24. $out = '';
  25. $wp_scripts = new WP_Scripts();
  26. wp_default_scripts($wp_scripts);
  27. if ( isset( $_SERVER['HTTP_IF_NONE_MATCH'] ) && stripslashes( $_SERVER['HTTP_IF_NONE_MATCH'] ) === $wp_version ) {
  28. $protocol = $_SERVER['SERVER_PROTOCOL'];
  29. if ( ! in_array( $protocol, array( 'HTTP/1.1', 'HTTP/2', 'HTTP/2.0' ) ) ) {
  30. $protocol = 'HTTP/1.0';
  31. }
  32. header( "$protocol 304 Not Modified" );
  33. exit();
  34. }
  35. foreach ( $load as $handle ) {
  36. if ( !array_key_exists($handle, $wp_scripts->registered) )
  37. continue;
  38. $path = ABSPATH . $wp_scripts->registered[$handle]->src;
  39. $out .= get_file($path) . "\n";
  40. }
  41. header("Etag: $wp_version");
  42. header('Content-Type: application/javascript; charset=UTF-8');
  43. header('Expires: ' . gmdate( "D, d M Y H:i:s", time() + $expires_offset ) . ' GMT');
  44. header("Cache-Control: public, max-age=$expires_offset");
  45. echo $out;
  46. exit;