Download Bootstrap Column from WordPress Plugins, or fork Bootstrap Column widget on Github.
WordPress Bootstrap Plugin
Although I’ve built a few custom WordPress plugins over the years, this is the first I’ve released publicly.
Bootstrap Column simply adds a widget which nicely works with Bootstrap v3 based themes.
It’s not dissimilar to the standard WordPress textbox widget, but it offers extra Bootstrap v3 layout functionality.
Those familiar with Bootstrap will quickly understand how it works.
Bootstrap offers a 12 column grid within four break points at which to change the layout. These breakpoints start from mobile first:
- Extra Small – for smartphones at less than 768px screen width
- Small – for tablets between 768px and 992px
- Medium – for larger tablets and small desktops between 992px and 1200px
- Large – for everything else above 1200px
Bootstrap provides a set of classes which not only control column width, but also their behaviour at these different screen sizes.
For example, take the following
<div class="col-lg-4 col-md-6">.
Both Small (sm) and Extra Small (xs) are left out, so Bootstrap will default this div to a full width layout, i.e. 12 columns.
At the Medium (md) breakpoint the div will stretch to 6 columns, or half the page width. At the Large (lg) breakpoint it will only be four columns in width.
Ideally it would be partnered with another div with this class value
<div class="col-lg-8 col-md-6">. At Large this gives you two columns at 1/3 and 2/3 page widths. At Medium it gives two equally sized columns.
These CSS features are very powerful and enables very quick layouts and prototyping.
Hopefully my plugin will make things a bit easier for other Bootstrappers.
Working on the plugin has really highlighted the standard of coding in WordPress. Although it’s a quick way of adding widgets, the code’s structure is not to be copied.
The widget framework is a quick and easy way to create plugins, but very messy and has little in common with the SOLID principles of programming.
For example, the single responsibility principle is ignored here. The class that extends the plugin class is responsible for saving and updating the widget’s contents and settings, and also rendering the HTML for both the front and back ends.
A nice templating system would be a tidy addition to the current way of doing things.