Due to all the changes from previous releases, I felt there was a growing inconsistency with old code and new, and decided to code review the entire theme code base. Certainly a daunting and time-consuming task, but one that has proven effective in streamlining lots of things as well as picking up quite a few rogue bugs. Since the focus for BioShip has been on stability rather than new features lately, things are feeling a lot more confidently "solid" after a good refactoring.
But I didn't stop there, because along the way, I decided to add code comment lines to every single block of code. I mean, who even does that? Well, what I was finding in my coding lately is that adding these explanations as I go made it much easier to see where things could be improved, so it really helped in all the refactoring. The other reason for this was to make the code as open and transparent as I could, giving BioShip another major advantage over other themes - being able to more easily understand the code if you need to! Wow.
Apart from all that, one aspect that needed some loving attention was updating the perpage theme metabox saving - to which a quicksave button has now been added (so there is no need to Update an entire post to save the new Theme Options.) Tracer debugging has been improved, as well as the loaded template list available from the admin bar. Some lagging documentation has also been updated and page navigation added to that.
And in other news, BioShip has been resubmitted to the WordPress theme repository. A lot of the changes in the past few versions have been working toward making this possible (without expectation), but for technical reasons related to its rather unconventional theming approach, it didn't quite pass the theme review process before. Hopefully this time there are few to no remaining issues to prevent acceptance and it's all good to go!
Full list of changes in version 2.1.1:
- Updated: Full Code Review of all core theme files!
- Updated: Documentation to match previous version changes
- Updated: translations file (/languages/bioship.pot)
- Changed: moved template includes tracing functions to tracer.php
- Changed: moved skin loading functions from functions.php to skull.php
- Changed: skeleton_navigation_hide filter to skeleton_navigation_remove
- Fixed: lots of minor bugs found during code review
- Fixed: PerPost Theme Options Metabox saving keys (newly prefixed)
- Fixed: possible error in file modified time cachebusting conditionals
- Fixed: stop Titan trying to load webfont stacks via Google Fonts
- Fixed: removed all line breaks from dynamic editor styles
- Fixed: typo cutting off comment styles in skeleton.css
- Fixed: Hybrid Cleaner Gallery minified stylesheet loading
- Fixed: add missing heading styles to Dynamic Editor Styles
- Fixed: theme file settings backup file() read for unserialization
- Optimized: moved all trigger checks inside functions for consistency
- Optimized: moved all add_actions inside function exists for consistency
- Optimized: page template includes indexing and admin bar display names
- Added: Theme Options Metabox quicksave override settings buttons
- Added: separated file admin/tools.php for Theme Tools functions
- Added: allow for alternative include directory path
- Added: extra (optional) value argument to bioship_apply_filters
- Added: single action or template tracing to theme tracer
So it's been a while since the last update, mostly because progress was stalled for a while due to a REALLY annoying bug, that of multicheck settings sometimes resetting themselves on save in the Theme Options screen. This seemed to happen every now and then previously, but after updating Titan Framework, seemed to have become a persistent bug, which resisted multiple attempts to fix. Unfortunately due to other time and project commitments I had to leave the update process for a while, since the existing version was more stable.
Now finally, having fixed the nonce refresh and collected a lot of debug data from multiple theme installations, while the cause of the issue still remains unknown, I have added a working check and fix so that if the multicheck options become empty upon saving, the posted values are rechecked and saved - and if that fails, they revert to the previously saved values. Sure, quite a pain of a workaround, but it finally works! And it means 2.1.0 is stable and can be released... which means being able to use the latest version and get on with further theme development. Yay!
Some further fixes included in 2.1.0:
- Updated: Titan Framework to v1.12
- Added: Cookie field to comment form for GDPR Compliance
- Fixed: index array check for stored global menus
- Fixed: incorrect default variable for disable emojis option
- Fixed: ignore font loading where font face is set to inherit
- Fixed: nonce key for Titan admin nonce cyclic auto-refresh
- Added: alert on session timeout on Titan theme options screen
So this update saw some major library updates. For one, the Kirki Customizer library was updated to version 3 and the integration code fixed for that. As well, needing to spend as much time as it did to fix the Kirki integration (that was previously working fine with Kirki 2) was really not an impressive process to me, so I have added fallbacks so the Customizer also works without Kirki in case things go astray again in the future. Also updated was TGMPA Plugin Activation and Freemius for Themes. A fix was needed by updating the Titan Color Picker Alpha Script and also a tweak to the Titan Font Control to fix color and text-shadow color selection.
Beaver Builder users will be happy to hear that Beaver Themer plugin integration has been added to BioShip! So now you can choose between using Hybrid Hooks and Beaver Themer for building more layout complex. Actually a number of improvements have been made to the theme hook definitions and labelling, as well as sidebar headers, to standardize them in preparation for a future standalone Layout Builder implementation. Yes, I feel the theme stability is finally good enough to go in that direction finally! Exciting news! So to that end, all current remaining known minor issues within BioShip have been centrally logged, with eliminating even those in mind. Things are advanced enough, so future feature additions will be kept to a minimum.
Getting closer to being hosted on the WordPress.Org repository, so most of this update was regarding those needed changes... well it's a bit of a long haul process, though somewhat expected because this theme was not written with that in mind, so it is a bit like pushing a round peg through a square hole and seeing a few bits shaved off. Specifically, some more things have been excluded from the WordPress.org version such as: Hybrid 2 (deprecated), Foundation, Dashboard Feed Widgets and the Discreet Text Widget. Re-added for WordPress.org are some cross-theme supports such as Custom Background and Custom Logo (but not Custom Header as BioShip actually uses a custom header background - which is way cooler.) Plus missing options have been added for setting the navigation submenu hover colour and background colours, and a missing date archive subsidebar has been restored (probably nobody was using that one yet anyway, lol.)
Some other minor fixes and improvements include:
- Titan options panel font color and text-shadow inputs
- missing some class attributes in sidebar templates
- incorrect index for BWP script auto-ignore integration
- set all font sizes in em for screen scaling
- missing number range on jpeg quality option
- missing email input type for CSS input styling
- missing style targeting for registration form wrapper
- typo in read more jump link removal filter
- debug file writing append using WP Filesystem
- documentation submenu link and redirection
- child theme creation process for WordPress.org
- use variables instead of inputs for script loading
- delayed priority for bioship_remove_actions
- allow for theme debug display and/or logging
- added DNS preconnect resource hint for Google Fonts
This is maintenance release covers most of the changes required for compliance for being hosted on the WordPress.Org Theme Repository. These are some fairly minor changes needed from the first review submission, so hopefully there will be sufficient to pass the manual review this time. 🙂
This version also contains a Widget fix for the WordPress 4.8 Text Widget debarkle, one consequence of which was the breaking of the Discreet Text Widget included in BioShip which extended the WP_Widget_Text class. No longer - a WP_Widget_Classic_Text class has been added which is simply a copy of the Text Widget from WP 4.7.5 so that the Discreet Text Widget can use it as it did (yeesh.)
Some other improvements include the fixing of a conflict with the global site icon, the ability to use author bio boxes outside the loop (eg. in sidebars) and a fix for content grid columns so they are full or half width on mobile screens as intended.
Oh and a shout out to WordCamp Brisbane 2017 which I just got back from..! Thanks #WCBNE
Looks like one of those querystring variables got away from me folks, defaulting the content grid columns to 24 regardless of theme setting... Fortunately found this one out quick and here's the hotfix version. Some preliminary work on cleaning the skeleton stylesheet, and redoing the screenshots as per the new BioShip Blank Canvas Demo Site is also included in this minor release.
It looks like I missed the memo on prefixing. Well, kind of, it's rather that prefixing is something I skipped as I hadn't originally planned to submit this theme to the WordPress Theme repository. But as time and development went on that seemed like a good goal after all, and so in final preparation for that, I've gone back and prefixed everything. Yeesh.
This was much more difficult than you'd think, because it required maintaining backwards compatibility with existing non-prefixed customizations, and without sufficiently tested code that could be a breaking change for users (myself included). So, there has been a considerable delay in this release as the initial prefixed version (unreleased for this reason) was tested and tweaked on all my existing sites to ensure all existing customizations still work.
So, from now on, you can access any existing theme action hooks and filters using the bioship_ prefix instead of the old skeleton_ prefix. And if you like you can change existing customizations that use that old prefix, but the point is - you don't have to - your site will still work fine. 🙂 Also of note, script handles, stylesheet handles, and image names now have a bioship- prefix as they should.
Among other minor bugfixes, the other more major changes and improvements in this version include:
- The addition of the Freemius SDK for Themes - you are invited to opt in to help improve BioShip by assisting with theme statistics and feedback.
- The removal of wp-load.php process from grid.php - all grid values are now passed to grid.php via querystring so that it's fully dynamic without requiring a secondary load process.
- Better integration with Better WordPress Minify - stylesheets that cause problems when minified are now automatically ignored, so there is no need to specify them manually for BWP any more.
- Language translation file has been regenerated - this was not a priority and held up until all the translation wrappers were put in place, which they now have been.
And what's next? Well since prefixing was the last on a long list of requirements for WordPress.Org, now that everything is ready, it Looks like it's time to submit to the Theme Repository and see what happens!
Well it's been a long journey, but BioShip has made it to Version 2! And the fully legit way of consistent updates - not just by bumping the version prematurely to look better or newer, lol. Well, I guess what this means is there aren't any major features added to the theme itself, but the focus has been on greater stability and optimization for a while now... and this approach will continue.
The discerning will recognize this is actually really good news for the project, because it means less and less bugs, not more bugs or bloat introduced as features are added. Besides, it already has way more included than most themes or frameworks ever will. The flexibility is there baked in from the start, and while it's been a bumpy road to get it all working, it's now a pretty smooth ride. And of course, I welcome any feedback to make it even smoother.
That said, if you are looking for those extra features (that you might expect from a theme but don't really belong there)... you won't be disappointed either. As I've started releasing them as separate plugins instead. Partly because they do things that are not really "theme territory"... but mostly because I have a lot of cool plugin ideas gathering virtual dust on my hard drive that I know people will find useful.
As such I am doing a plugin giveaway as of right now (December 2016), challenging myself to release 10 Plugins in 10 Weeks... or more! Plus, launching a solutions forum to go with them (with a BioShip support and features section there)... welcoming new users and contributors of any experience level. The first plugin release is somewhat of an extension for BioShip (but can be used with any theme, which is why it's a plugin) - and that is Content Sidebars, for adding extra flexible widget areas to your content and surrounds.
But I digress, there's plenty more plugins to come so check them all out:
WordQuest Plugins Giveaway
Oh yeah, here are the other things updated in BioShip Version 2:
- Updated: WordQuest Helper Library to 1.6.5
- Updated: BioShip news dashboard feed widget
- Added: missing translation wrappers to admin
- Fixed: full page content feed output
- Fixed: multicheck box options bug one more time
- Fixed: filemtime mode cachebusting for style.css
- Fixed: breadcrumb display override targeting bug
- Fixed: meta formatting duplicate dash replacement bug
The options are still available via Skin, Muscle and Skeleton panels on both pages, but split into more user-facing and more developer-facing options. This solution seems to suit the Customizer purpose better, as the majority of the Live Preview options for basic styling or design are available on the Basic page and the less often changed options for development on the Advanced page. Personally I much prefer accessing everything on the one page via Titan Framework, but for those who prefer the Customizer this will speed things up a bit.
Of course there are some other improvements in this version, one of note being the fixing of the StickyKit and mobile queries conflict. This means you can now enable StickyKit for the sidebar elements without having to worry about it glitching out on smaller screens. Also, with the addition of the option to load jQuery MatchHeight, you can easily match the height of content grid columns (or other elements) simply by adding the class matchheight to them. Neat.
Here's a more complete list of updates:
- Customizer: split into Basic and Advanced Option pages
- Option: jQuery Match Height loading for .matchheight classes
- Added: function tracer lines to all templating functions
- Fixed: jQuery StickyKit and Mobile Queries conflict
- Fixed: jQuery StickyKit total width display glitch
- Fixed: set changed theme sidebar state for empty sidebars
- Removed: old unused display output override checks
- Optimized: reduced old meta formatting code bloat
Got to some of those various lesser bugs in this version, including fixing the constructor method for the Discreet Text Widget. The major change here though is a complete revamp of the theme function tracer prototype, which means you can easily trace exactly what arguments are being passed to any function within the theme. See the Debug Documentation
for usage instructions.
- Fixed: map default options if empty (on theme activation)
- Fixed: fix to numerous undefined variable warnings
- Fixed: add check for logoresize page element in init.js
- Fixed: to TMGPA plugin recommendations array
- Fixed: process shortcodes in excerpts filter option
- Fixed: removed overflow:hidden from CSS clearfix causing height
- Improved: tracer.php fully revamped outdated debug tracer
- Improved: use templating action priorities from hooks array
- Update: replace deprecated constructor on Discreet Text Widget
- Update: Discreet Text Widget (deprecated constructor method)
This is a minor bugfix release for 1.9.5, but also with the completion of the basic Grid documentation which was missing as not quite finished in the previous release.
- Docs: Grid System documentation completed
- Fixed: grid.php overflow bug by recalculating wrap width total
- Fixed: grid.php offset left class rule selector typo
- Fixed: muscle.php some mismatching WP to Open Graph locales
- Fixed: skin.php login and inline admin styles output exit bug
- Fixed: skin.php missing fallback to main background for wp-login
- Fixed: skin.php missing number input type for input styles
- Fixed: options.php background repeat option array typo
- Fixed: theme options header size for smaller screen widths