Deprecated: Return type of Requests_Cookie_Jar::offsetExists($key) should either be compatible with ArrayAccess::offsetExists(mixed $offset): bool, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /home2/justin/public_html/bootplate/wp-includes/Requests/Cookie/Jar.php on line 63

Deprecated: Return type of Requests_Cookie_Jar::offsetGet($key) should either be compatible with ArrayAccess::offsetGet(mixed $offset): mixed, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /home2/justin/public_html/bootplate/wp-includes/Requests/Cookie/Jar.php on line 73

Deprecated: Return type of Requests_Cookie_Jar::offsetSet($key, $value) should either be compatible with ArrayAccess::offsetSet(mixed $offset, mixed $value): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /home2/justin/public_html/bootplate/wp-includes/Requests/Cookie/Jar.php on line 89

Deprecated: Return type of Requests_Cookie_Jar::offsetUnset($key) should either be compatible with ArrayAccess::offsetUnset(mixed $offset): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /home2/justin/public_html/bootplate/wp-includes/Requests/Cookie/Jar.php on line 102

Deprecated: Return type of Requests_Cookie_Jar::getIterator() should either be compatible with IteratorAggregate::getIterator(): Traversable, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /home2/justin/public_html/bootplate/wp-includes/Requests/Cookie/Jar.php on line 111

Deprecated: Return type of Requests_Utility_CaseInsensitiveDictionary::offsetExists($key) should either be compatible with ArrayAccess::offsetExists(mixed $offset): bool, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /home2/justin/public_html/bootplate/wp-includes/Requests/Utility/CaseInsensitiveDictionary.php on line 40

Deprecated: Return type of Requests_Utility_CaseInsensitiveDictionary::offsetGet($key) should either be compatible with ArrayAccess::offsetGet(mixed $offset): mixed, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /home2/justin/public_html/bootplate/wp-includes/Requests/Utility/CaseInsensitiveDictionary.php on line 51

Deprecated: Return type of Requests_Utility_CaseInsensitiveDictionary::offsetSet($key, $value) should either be compatible with ArrayAccess::offsetSet(mixed $offset, mixed $value): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /home2/justin/public_html/bootplate/wp-includes/Requests/Utility/CaseInsensitiveDictionary.php on line 68

Deprecated: Return type of Requests_Utility_CaseInsensitiveDictionary::offsetUnset($key) should either be compatible with ArrayAccess::offsetUnset(mixed $offset): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /home2/justin/public_html/bootplate/wp-includes/Requests/Utility/CaseInsensitiveDictionary.php on line 82

Deprecated: Return type of Requests_Utility_CaseInsensitiveDictionary::getIterator() should either be compatible with IteratorAggregate::getIterator(): Traversable, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /home2/justin/public_html/bootplate/wp-includes/Requests/Utility/CaseInsensitiveDictionary.php on line 91
Pre-Integrated Plugins | Bootplate

Pre-Integrated Plugins

We’ve received quite a few questions about what, exactly, we mean by “pre-integrated plugins.”  A lot of premium/purchased themes come with a few plugins pre-installed or required.  That drives us nuts.  They are almost never truly free and almost un-upgradable.  Let’s talk a little bit about what we mean by “pre-integrated.”

Rest assured, none are “pre-installed” and they’re certainly not “required.”

The Problem

For the majority of WordPress plugins you install, they’ll each want to load their own, separate stylesheets and probably some JavaScript.  That’s not the end of the world, but some of these files are tiny, little files that stop the loading of your page while the browser makes 50 different calls to 3KB files.  That’s a lot slower, believe it or not, than 2 calls to 2 files weighing in at 75KB each.

Believe it or not, it’s a LOT faster for your browser to load 2 files weighing in at 75kb each (150kb total), than 50 files that are just 3kb each (also 150kb total).

For the most part, your browser is able to request and parse 4 different files at the same time.  Any more than that and it “blocks” the loading of the rest of the page.  That’s why you’ll see errors like “eliminate render-blocking scripts above the fold” in some speed tests.  What they’re really saying is that you’re loading too many external files and your browser has to block the rendering of the actual web page for a long time.  Arg!

The “Pre-Integrated” Solution

Traditionally, theme designers would have to track the enqueued plugin CSS and JS “handles” and deregister them one-by-one.  Then, they would have to copy all that code into the theme’s core files (like style.css and main.js, or whatever).  That’s time consuming, inefficient, and a giant pain in the ass.

What we’ve done with Bootplate is pre-integrate a handful of popular plugins.  By that we mean:

  1. Detect if one or several of our Pre-Integrated plugins are installed and active
  2. For the ones we find, we deregister their CSS and JS
  3. We include the latest versions of that style and JS into the theme’s core
  4. Then, let the plugin do its thing.

When possible, we’ll even write our own function to include, say, a subtitle in the appropriate plate in the template file.  Our function actually just goes out and sees if any of the (in this case three) pre-integrated plugins are installed and active.  If one is, our function uses the plugin’s function (from their documentation) to return the right info.

That’s a very nerdy way of saying, “use a pre-integrated plugin from the list and, once active, it just sort of works.  No messing around needed.”

Here’s a list of the plugins that are either pre-integrated in Bootplate or already tested and optimized for.

What if…

What if the plugin you want isn’t pre-integrated?  No big deal.  It just works as it usually does.  There ARE other ways of getting around the problem presented when you use a lot of plugins at once, but they’re all in plugin territory.

One such way would be to use a plugin called, Better WordPress Minify (free on the WordPress repo).  Basically this plugin combines and minifies (removes comments and other useless stuff to keep the file size small) to improve page load time.

There are also a ton of other caching and minification plugins out there, like W3 Total Cache.  We just like BWM because it just does the combine & minify thing.  Totally up to you.