Better WordPress Minify Plugin
Allows you to combine and minify your CSS and JS files to improve page load time.
Allows you to combine and minify your CSS and JS files to improve page load time. This plugin uses the PHP library Minify and relies on WordPress’s enqueueing system rather than the output buffer, which respects the order of CSS and JS files as well as their dependencies. BWP Minify is very customizable and easy to use.
Useful resources to help you get started and make the most out of BWP Minify
Some Features
- Uses enqueueing system of WordPress which improves compatibility with other plugins and themes
- Allows you to move enqueued files to desired locations (header, footer, oblivion, etc.) via a dedicated management page
- Allows you to change various Minify settings (cache directory, cache age, debug mode, etc.) directly in admin
- Allows you to use friendly Minify urls, such as
http://example.com/path/to/cache/somestring.js
- Allows you to use CDN for minified contents, one CDN host for JS and one for CSS with SSL support
- Allows you to split long Minify strings into shorter ones
- Offers various way to add a cache buster to your minify string such as WordPress’s version, Theme’s version, Cache folder’s last modified timestap, etc.
- Supports script localization (
wp_localize_script()
) - Supports inline styles
- Supports RTL stylesheets
- Supports media-specific stylesheets (e.g. ‘screen’, ‘print’, etc.)
- Supports conditional stylesheets (e.g.
<!--[if lt IE 7]>
) - Provides hooks for further customization
- WordPress Multi-site compatible
Please don’t forget to rate this plugin 5 shining stars if you like it, thanks!
Get in touch
Languages
- English (default)
- Romanian (ro_RO) – Thanks to Luke Tyler, International Calling Cards!
- Turkish (tr_TR) – Thanks to Hakan E
- French (fr_FR) – Thanks to Sebastien
- Italian (it_IT) – Thanks to Gabriele – http://cookspot.it
- Spanish (es_ES) – Thanks to Ruben Hernandez – http://usitility.com/
- Dutch (nl_NL) – Thanks to Martijn van Egmond
- German (de_DE) – Thanks to Matthias
- Serbo-Croatian (sr_RS) – Thanks to Borisa Djuraskovic – Web Hosting Hub
- Indonesian (id_ID) – Thanks to Nasrulhaq Muiz – http://al-badar.net
- Russian (ru_RU) – Thanks to Эдуард Валеев
Please help translate this plugin!
Installation
- Upload the
bwp-minify
folder to the /wp-content/plugins/
directory - Activate the plugin through the Plugins menu in WordPress. After activation, you should see three menus of this plugin on your left.
- Configure the plugin.
- Make sure the
cache
folder is writable, by CHMOD
it to either 755
or 777
, depending on which one works for you. - For Advanced Configuration, take a look at BWP Minify Advanced Usage.
Enjoy!
Screenshots
Basic Functionality
Advanced Settings
Enqueued files management
Minify in action!
FAQ
Check plugin news and ask questions.
Installation Instructions
- Upload the
bwp-minify
folder to the /wp-content/plugins/
directory - Activate the plugin through the Plugins menu in WordPress. After activation, you should see three menus of this plugin on your left.
- Configure the plugin.
- Make sure the
cache
folder is writable, by CHMOD
it to either 755
or 777
, depending on which one works for you. - For Advanced Configuration, take a look at BWP Minify Advanced Usage.
Enjoy!
Changelog
1.3.3
* Fixed an issue with wrong `min/config.php` file.
1.3.2
* Marked as WordPress 4.0 compatible * When updating BWP Minify, friendly minify url should be turned off automatically if required rewrite rules are not found. An appropriate error message will be shown once to notify owners of the site so that they can take appropriate actions. * When friendly minify url is enabled, rewrite rules for both Apache and Nginx will be shown. This is to add support for Nginx as a reverse proxy. * Fixed a bug that makes the detector fail to commit logs, which results in empty enqueued file lists. * Other minor fixes and enhancements. * BWP Minify now requires WordPress 3.1.0 or later.
1.3.1
- Enhancements
- Added an option to leave external enqueued files at their original positions.
- Added compatibility for Maintenance plugin (BWP Minify will be inactive when Maintenance mode is on).
- Improved settings on
Manage enqueued files
admin page to allow better control over enqueued files. Take a look at this updated section of official documentation for more details. - Improved friendly minify url feature to work better with cache plugins: friendly urls should show up on first load.
- Bugs fixed
- Fixed an issue where CDN hosts don’t replace the original host properly
- Fixed an issue with SSL on
wp-login.php
page
Important Note: After updating to 1.3.1, users of Simple Google Maps Short Code
plugin (or similar ones) and Avada
theme should go to BWP Minify > General Options and turn on Leave external files at their original positions?
setting to make map shortcodes work.
1.3.0
- New Features
- Added support for Friendly Minify strings, e.g.
http://example.com/path/to/script.js
(best used with CDN). This feature should work well on nginx server. - Provides a much better method to capture and print JS, CSS files.
- Dependencies are more intelligently handled. This should fix many incompatibility issues with other plugins. Note: users of Leaflet Map Markers plugin will still need to add
leafletmapsmarker
handle to Script to be ignored (not minified)
. - Provides full support for conditional and alternate CSS files.
- Auto-detects CSS, JS files used on site. Added a new admin page to easily add CSS, JS files to desired positions.
- Added a new position called
oblivion
, admin can put CSS, JS files to this position to remove them completely from the site, this is useful when you want to remove duplicate files. - You can now control Minify Library’s settings via
wp-admin
setting page. - Basic CDN support with SSL.
- Bugs fixed
- Fixed issues with certain installations where WordPress is installed into a sub-directory or
wp-content
folder is moved. - Fixed incompatibility issues with protocol-relative URLs.
- Fixed possible incompatibility issues with forced-SSL URLs.
- Other minor fixes.
- Enhancements
- BWP Minify is WordPress 3.9 compatible.
- BWP Minify should now be able to handle very late JS, CSS files that are queued/printed directly using
wp_print_scripts
and wp_print_styles
. - Changed Minify URL setting to contain a relative URL (from site root) instead of an absolute URL. This should be useful when switching between staging and live site, or between mirror sites.
- Changed Minify strings’ default length to
10
to avoid errors on certain servers. Users are encouraged to increase/decrease the length when needed, or enable Pretty Minify String instead. - Disable
Minify bloginfo()
setting by default. Modern themes should always use the enqueue system for any stylesheet. admin-bar
, jquery-core
, and jquery-migrate
are now ignored by default.admin-bar
and dashicon
are now ignored by default- Changed default cache age to 1 day instead of 2 hours.
- Users can now use
BWP_MINIFY_CACHE_DIR
and BWP_MINIFY_MIN_PATH
constants to override the Cache Directory and Min Path setting in admin. This can become useful when mirroring a site. - Other minor enhancements.
- Misc
- Added a Serbo-Croatian translation – Thanks to Borisa Djuraskovic!
- Added an Indonesian translation – Thanks to Nasrulhaq Muiz!
- Added a Russian translation – Thanks to Эдуард Валеев!
Migration from 1.2.x
- Minify URL setting has been replaced with Minify Path setting and you will have to manually update this setting if you’re using a non-default one. Note to Developers: the setting’s key has been changed from
input_minurl
to input_minpath
. The hook bwp_minify_min_dir
is still available but deprecated in favor of bwp_minify_min_path
- Minify Path setting and Cache Directory setting are now default to empty value, which means they’re automatically detected.
Enjoy this release, and please don’t forget to rate BWP Minify5 shining stars if you like it, thanks!
Bonus: Check out these Minifying Best Practices to apply to your site today!
1.2.3
- BWP Minify is now WordPress 3.7 compatible (compatibility issues with WordPress 3.5 and 3.6 have been fixed).
- Updated Minify library to version 2.1.7 (security fix). This updated version of Minify also comes with an updated version of CSSMin library, which solves relative path issues in some plugins’ CSS files (such as TablePress).
- Added support for protocol-relative media sources.
- Added partial support for bbPress forum plugin (
quicktags
script must be ignored for the Text editor to work, more info here). - Added a filter (
bwp_minify_is_loadable
) to allow other plugins to disable BWP Minify based on some criteria. - Added a Spanish translation – Thanks to Ruben Hernandez!
- Added a Dutch translation – Thanks to Martijn van Egmond!
- Added a German translation – Thanks to Matthias!
- Disabled BWP Minify on Ajax Edit Comment plugin’s pages (for now).
- Disabled BWP Minify on SimplePress forum page.
- Updated BWP Framework to fix a possible bug that causes BWP setting pages to go blank.
- Fixed a bug that makes BWP Minify fails to split long minify string into shorter ones.
- Good news: I have created an official Github repository for BWP Minify, awaiting coders worldwide.
- Good news: ManageWP.com has become the official sponsor for BWP Minify – Read more.
Notes: If you’re using All-in-one Calendar plugin and still having issues with it after update, please try this suggestion.
1.2.2
- Fixed a possible fatal error on certain installations.
1.2.1
- Added support for inline styles (available since WordPress 3.3).
- Cache directory is now hidden from normal admins when used on a Multi-site environment.
- Added additional hooks allowing developers to control Minify Tags and Minify Src, more info: http://betterwp.net/community/topic/226/additional-hooks-filters-to-getminifytag/ (
bwp_get_minify_src
, bwp_get_minify_tag
) - Added a new hook for buster allowing developers to dynamically work with this variable (
bwp_minify_get_buster
) - Fixed the pass-by-references fatal error when activating the plugin on a host using PHP 5.4 or higher.
- Fixed a possible bug where dependencies are ignored, more info: http://betterwp.net/community/topic/153/dependencies-ignored/
- Fixed a possible bug where scripts are echoed twice.
- Updated Turkish (tr_TR) translation – Thanks to Hakan E!
1.2.0
- New Features:
- Added a Flush cache button
- Split auto minify option into two options, auto minify js and auto minify css
- Added a new buster: theme version – thanks to Jon for the patch!
- Bugs fixed:
- Fixed a bug that broke minify strings if current port is not 80
- Fixed two bugs that broke minify strings when
HTTPS
is enabled - Fixed
wp_localize_script
duplication issue - Fixed media style duplication issue
- Fixed a deprecate notice caused by the use of
print_scripts_l10n
- Fixed some script dependency issue when you choose to ignore certain scripts
- Enhancements:
- Increased default cache time to something longer (2 hours)
- Cache directory can now be edited in admin area. Please note that changing the cache directory is still a two-step process, which has been described in great details here.
- Misc:
- Added a Turkish translation – Thanks to Hakan E.
- Added a French translation – Thanks to Sebastien
- Added an Italian translation – Thanks to Gabriele
1.0.10
- Fixed two possible PHP notices when using root-relative paths as Minify URL. Thanks to Marcus!
- Fixed wrongly closed HTML
<link>
tags. - Fixed a bug that breaks the dynamic JS file enqueued by Mingle plugin.
- Fixed an incompatibility issue with WP Download Monitor.
- Fixed an incompatibility issue with Geo-Mashup, thanks to JeremyCherfas for reporting!
- Added support for the new script localization function introduced in WordPress 3.3. Thanks to workshopshed for reporting!
- Added Romanian translation, thanks to Luke Tyler!
1.0.9
- Fixed a possible PHP warning about an argument not being an array.
1.0.8
- Hot fix for 1.0.7, which resolves the broken CSS issues for the wp-login page when you install WordPress in a sub-directory.
1.0.7
- Hot fix for 1.0.6, which resolves some compatibility issues with certain plugins.
1.0.6
- Added four more hooks for theme developers to fully control how scripts and styles should be enqueued and minified.
- Changed the Min URL hook a bit so themes can actually filter it.
- Added support for plugins or themes that try to enqueue and print script using the
wp_footer
action instead of the init
action. Plugins like ‘Jetpack by WordPress.com’ should be working correctly now. - Other improvements made to the positioning of styles and scripts.
Enjoy BWP Minify!
1.0.5
- Added support for theme developers who would like to integreate BWP Minify into their themes
- Added a new hook added for
min
path. - Added new hooks to allow theme developers to only minify certain media files (see this section for more details).
- Some bug fixes.
- A lot of improvements have been made to catch styles and scripts printed using
wp_print_scripts
and wp_print_styles
. - The base (
b
) parameter has been removed from the minify string to add support for non-standard WordPress installation (wp-content
has been moved or renamed.) Thanks to Lee Powell for bug reports and patches! - Fixed a bug that makes BWP Minify fail to determine the cache directory in a sub-folder installation of Multi-site.
- Fixed a possible incompatibility issue with Easy Fancybox, thanks to Bob for reporting!
- Minor bug fixes for login and signup pages.
1.0.4
- Fixed an incompatibility issue with media files’ uppercase letters.
- Fixed a minor undefined offset notice, thanks to Torsten!
1.0.3
- Fixed a compatibility issue with dynamically generated media files, thanks to naimer!
- Not really a changelog, but a small snippet for users who want to exclude CSS files has been posted.
1.0.2
- Fixed a compatibility issue with other plugins loading styles and scripts on a separate .php page. Thanks to larry!
- Also fixed a possible bug in 1.0.1
1.0.1
- The plugin should now detect cache folder correctly for users who install WordPress in a sub-directory.
1.0.0