Round two of escaping output throughout the theme turned up more instances to be escaped, plus a few fixes to last times attempts. All for the seemingly unescapable list of WordPress.org Theme Review requirements (pun intended.) Since this was a lot of work for little gain, while I was at it I went through and added detailed structural indexes at the top of all the main theme files. Just makes it easier to find stuff. Moved a few out of place things around as a result, but nothing major.
Finally got around to fixing admin thumbnail display in post lists. A very old feature low priority feature that stopped working at some point. Has now been updated to work for any selected custom post type via an updated multicheck option. Some other minor things fixed in this update include removing duplicate a heading from the blog page, added missing pagination to the blog page too, and a display fix to the comment buttons. Also added were skip links for Accessibility requirements.
- Added: accessibility skip link in header.php (just after wp_body_open)
- Moved: Theme Options Editor Metabox to admin/metabox.php (from admin.php)
- Improved: add file structure notes to all main theme function files
- Improved: add option to show thumbnail in admin column for any CPTs
- Improved: move selective resource build save triggers internally
- Fixed: admin post thumbnail column image display for post lists
- Fixed: duplicate title/description output for home blog page archive
- Fixed: missing archive pagination for blog page (as front or blog page)
- Fixed: various escape output messages throughout theme functions
- Fixed: first comment meta spacing for buttons (to align with threaded)
- Fixed: documentation popup thickbox links on Info Settings tab
- Fixed: documentation includes for hooks and theme options pages
Here's what got updated (as though it really matters to you):
- Fastclick script (fastclick.js) to v1.0.6
- Scroll to Fixed script (jquery.scrolltofixed.js script to v1.0.7
- Match Height script (jquery.matchHeight.js) to v0.7.2
- PrefixFree script (prefixfree.js) to v1.0.10
- NWMatcher script (NWMatcher.js) to v1.4.4
- FitFids (jquery.fitvids.js) to v1.2
- Superfish script (superfish.js) to v1.7.10
- Reset stylesheet (reset.css) to v2
- Normalize stylesheet (normalize.css) to v8.0.1
Then, licenses. Not just adding a theme licence file (GPL 3), but spending hours of tracking down licenses for all the included resources so that their their information is all in one place (/includes/licenses.txt) Thrilling stuff I'm sure you'll agree, but just another step on the BioShip journey... hopefully the ship will really take off soon. 🙂
Here's some other things that got fixed and done in the meanwhile:
- Added: Hover Intent script (jquery.hoverIntent.js) for Superfish
- Improved: added default body font (for fonts with inherit rule)
- Moved: Admin Bar Theme Options Item to muscle.php for frontend
- Fixed: themesettings variable for get header image size (skin.php)
- Fixed: moved Sticky Kit load to head (footer load not working)
- Fixed: Admin Bar Theme Options icon style for frontend
- Fixed: mismatching function name for Titan nonce refresh
- Fixed: removed duplicate output escaping in archive templates
- Fixed: moved no content paragraph wrapper in error template
In this version are various minor bugfixes, as well as some changes arising from the latest attempt to submit to the WordPress theme repository... Will it ever be accepted? Who knows. Every time I discuss a few issues raised the ticket gets closed before I can fix them all. *sigh* Ah well, back to the start of the queue, wait another month or so... will just keep trying, as it will only keep improving things. So a bit more compliance stuff added, but mostly escaping variable outputs. Fun stuff. Also added a theme readme.txt, updated TMPGA, and added some PHP pre-5.3 compatibilities.
Some other minor things added in this version, such as basic Elementor Locations support, and inclusion of the new wp_body_open hook. No major bugs, so mostly minor misceallaneous fixes to make the theme more stable:
- Added missing menu override output filters (primary/header/footer)
- Added some missing button text translation wrappers
- Re-added Titan web safe font filter (removed from Titan Framework)
- Fixed use of duplicate variable for typography in skin loader
- Fixed Inline Styles Setting output exiting early bug
- Fixed incorrect directory variable for Titan Framework checker
- Added check for edit theme permissions to Admin Bar Theme Options item
- Removed incompatible Hybrid term list usage from taxonomy meta display
- Fixed Titan options CSS quicksave settings message display and fadeout
- Removed breaking double quotes around inherit font value output
- Changed .site-desc span to div to allow text width wrapping
- Improved active widget counting in footer sidebar template (sidebar/footer.php)
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