A series of targeted releases covering multilingual system foundations, Page Builder development, SEO engine overhaul, Testimonials module, and progressive admin architecture improvements.
Version 2.4.0 – Multilingual Theme Options & SEO Overhaul
- Theme Options Translation: Added full translation support for Theme Options fields, including Site Title and Site Description. Translated values are loaded by default via
Options::get_option(), replacing the need for a separate$translatedparameter. Language direction (LTR/RTL) is configurable from the admin panel. - Locale-Based URL Slugs: Replaced 2-character language code prefixes in URL paths with full locale slugs, adding
BISTEINOFF_DEFAULT_LANG_SLUGandBISTEINOFF_LANG_SLUGSconstants. URL paths are now correctly stored in language switcher modal flag links. - Locale-Aware Taxonomy Links: Extended multilingual routing to localise term links for categories, post tags, product categories, and other taxonomies. Translation fields for category Name and Description now appear inline, directly after the corresponding native WordPress fields.
- SEO Translation for Taxonomies: Added translated SEO metabox tabs on taxonomy admin pages, with correct sanitization and output of translated SEO meta tags on the front end.
- Language-Specific Database Tables: Introduced creation of per-locale
postmeta,termmeta, andterm_taxonomydatabase tables to store language-specific post and term data. - Multilingual Builder Fields: Added translatable Title and Subtitle fields to Page Builder sections and the Slider component, saving to and reading from language-specific postmeta tables.
- Admin UI Improvements: Added flag icons to translated fields in admin, language toggle icons per field, and icon indicators to Section and SEO metabox headers. Language-specific fields in General Settings and Categories are positioned directly after the native field they translate.
- Numeric Field Type: Added a
numfield type to the options panel; migrated width, height, and year fields to this type for proper integer handling. - Environment Detection: Added
is_localhost_env()method to the core class to correctly identify local development environments.
Version 2.4.1 – Builder & Multilingual Fixes
- Translated Button Support: Added multilingual support for button fields in Page Builder components.
- Translated Features Support: Extended multilingual field support to the Features component.
- Builder URL Field Fix: Corrected field type handling for URL fields in section configuration.
- WP 6.8 Compatibility: Verified and confirmed compatibility with WordPress 6.8.
Version 2.4.2 – Namespace Migration
- Bisteinoff Namespace Adoption: Migrated all remaining classes to the
BisteinoffPHP namespace, completing the transition from the legacy procedural structure to a fully namespaced OOP architecture.
Version 2.4.3 – Hook Prefix Standardisation & Asset Refactor
- Action and Filter Prefix Rename: Renamed all custom actions and filters from the
db_prefix tobisteinoff_throughout templates, hooks, and shortcodes (e.g.db_embed→bisteinoff_embed,db_nav_langs→bisteinoff_nav,db_socialsshortcode →bisteinoff_socials). - Bisteinoff\Customizer Class: Introduced
Bisteinoff\Customizeras the centralised asset enqueuing class, migrating all head, footer, and admin CSS/JS enqueuing, script deferral, jQuery CDN loading, WP Color Picker, Owl Carousel, FancyBox, deSVG, and embed HTML output into this class. - Hookable Class Refactors: Moved breadcrumbs logic to
Bisteinoff\Hooks\Breadcrumbs; refactored footer, header, socials, nav, contact, modal, scroll-to-top, and related articles output into dedicated hookable classes; moved WooCommerce functions toinc/woocommerce.php. - Gutenberg Control: Added
BISTEINOFF_USE_GUTENBERGconstant to enable or disable Gutenberg and its REST API dependency. - Share Buttons: Added social share buttons to single post pages.
- Inline Script Nonce Fix: Added missing nonces to inline scripts.
- Constants Reorganisation: Moved all constants from
functions.phptoinc/config/constants.php. - PHPDoc Coverage: Added or corrected package, subpackage, license, since, and version tags across all admin files.
Version 2.4.4 – Page Builder Core (Initial Release)
- Section / Row / Column / Block Structure: Built the foundational Page Builder hierarchy: sections, rows, columns, and blocks, each with AJAX-based add, edit, sort, and remove operations in the admin metabox.
- Modal System: Implemented a unified modal form for all element types, with AJAX content loading, nonce and permission verification, and tabbed field layouts.
- Field Types: Added checkbox, checkbox fieldset, select, text, number, URL, color mode, background media, and grouped field types to the builder admin form.
- WYSIWYG Block: Added a TinyMCE WYSIWYG block type with correct JSON encode/decode handling,
wp_unslashon save, and front-end output viawpautop. - Title and Subtitle Fields: Added Title and Subtitle fields to components with base64 encoding/decoding for safe storage and output.
- Front-End Output: Implemented front-end rendering for sections, rows, columns, blocks, and WYSIWYG content.
- Data Storage and Validation: Introduced structured element ID validation, correct parent ID tracking for nested elements, and sanitized JSON storage with
JSON_UNESCAPED_SLASHES. - JavaScript Architecture: Split the builder JavaScript into four focused files (structure, modal, sorting, validation); optimised modal script; added minified production builds.
- Admin Styling: Applied initial admin styling to the metabox, sections, columns, and block elements.
- hreflang Fix: Corrected hreflang
langattribute values to meet Google’s language code standard and included the page path in hreflang URLs. - Options Caching: Optimised
Options::get_option()to cache retrieved option values in memory, reducing redundant database reads.
Version 2.4.5 – Theme Options UI & Multilingual Refactor
- Theme Options Layout Redesign: Rebuilt the Theme Options panel layout with a new navigation structure, nav icons, styled settings blocks, and consistent padding for translated fields and flag positions.
- Admin Loader Class: Introduced
Bisteinoff\Admin\Loaderto manage loading of all admin files, replacing direct includes. - Multilingual Class Restructure: Divided multilingual functionality into separate classes for content hooks, database operations, constants, config, and SEO hooks.
- Maintenance Mode: Added a Maintenance Mode option to Theme Options with a custom page template and styling.
- WP Speculation Rules Fix: Added a check for
wp_get_speculation_rules()existence before calling it, preventing errors on older WordPress versions.
Version 2.4.6 – Navigation, WooCommerce & Code Organisation
- Copyright Menu: Added a dedicated Copyright Menu navigation location in the footer, with corresponding styling, and removed the previously required theme option for this.
- Navigation Icon URL Option: Added an Icon URL field to WordPress nav menu items, displaying the icon alongside the link description.
- Hamburger + Horizontal Menu Toggle: Added a theme option to display both the hamburger and horizontal navigation menus simultaneously.
- Locale-Specific Menus: Added support for assigning separate desktop and mobile navigation menus per language version.
- WooCommerce Video Gallery: Added video gallery support to WooCommerce product pages, including Firefox aspect ratio fix for the carousel.
- WooCommerce Class: Moved WooCommerce custom functions into a dedicated hookable class.
- Shortcode and CPT Registration: Moved shortcode and custom post type registration into dedicated hookable classes.
- Footer CSS Extraction: Moved footer styles from
main.min.cssto a separatefooter.min.cssfile. - Admin Actions Hook: Removed the standalone Front Page tab from Theme Options and replaced it with a
bisteinoff_frontpage_contentaction hook.
Version 2.4.7 – Global CSS/JS Prefix Rename & Builder Multilingual
- CSS/JS Class Prefix Rename: Renamed all frontend and admin CSS class, ID, and JavaScript variable prefixes from
db-/db_tobst-/bst_. Included SCSS variables, color mode classes, logo classes, and image size names (with a database migration to update stored attachment metadata). - Builder Multilingual Fields: Added multilingual support for WYSIWYG, Title, and Subtitle fields in the Page Builder, saving to and reading from language-specific postmeta.
- Footer Background Image: Added a Footer Background Image option to Theme Design, with a corresponding hookable
Footerclass handling output. - Page Builder Screen Restriction: Removed Page Builder support from
postandproductedit screens by default. - ThemeSetup Class: Moved the main theme setup function (
after_setup_themeactions) to a dedicatedThemeSetuphookable class.
Version 2.4.8 – Internal Naming Standardisation
- Function and ID Prefix Rename: Completed the rename of all remaining PHP function prefixes from
db_tobisteinoff_, covering template functions, filter names, and utility helpers throughout the theme. - Main Theme Class Rename: Renamed
class Bisteinoff\Bisteinofftoclass Bisteinoff\Themeand its file fromclass-bisteinoff.phptoclass-bisteinoff-theme.php. - Localization Class: Moved the Poedit/gettext localisation function to a dedicated
Localizationhookable class.
Version 2.4.9 – Builder Components, Metabox & Styling
- BISTEINOFF_SCREEN_TYPES Constant: Introduced
BISTEINOFF_SCREEN_TYPESconfiguration constant mapping screen type labels to breakpoint keys, used in row/column class generation and the carousel configuration. - Bootstrap Responsive Order Classes: Added responsive column order Bootstrap class options to the Page Builder admin column configuration, with front-end output.
- Media Helper Class: Moved media helper functions to
Bisteinoff\Hooks\Mediaand added Image Size fields to Page Builder components for use in media output. - Metabox Class Refactor: Replaced the old
Admin_MetaBoxclass with a newMetaboxclass under theBisteinoff\Adminnamespace; added support for WP Built-in Editor toggle per page, default field values, and default checkbox states. - Builder Language Field Save Fix: Fixed saving of language-specific Title and Subtitle fields in the Page Builder.
- Column Inner Block: Added a
bst-col-innerinner wrapper block to column output with correct styling and padding. - Contact Page Styling: Added contact icon styling for the contact page and mobile nav menu; wrapped each contact entry in a single
<a>link element. Added abisteinoff_contact_iconfilter for custom icon overrides per contact type. - Footer Options: Added a text-below-logo option in Theme Options; styled the footer logo and copyright layout.
- Nonce Addition: Added nonces to the
wp-i18ninline script and to the Contact Form 7 inline script. - Sitemap Update: Refactored XML sitemap logic.
- WP 6.9 Compatibility: Added footer script enqueuing compatible with the changed script loading behaviour in WordPress 6.9.
- BISTEINOFF_TEMPLATEPATH Constant: Replaced the deprecated WordPress
TEMPLATEPATHconstant with a theme-specificBISTEINOFF_TEMPLATEPATH.
Version 2.4.10 – Testimonials Module (Initial Release)
- AJAX Submission Form: Built a custom AJAX-powered testimonial submission form with fields for rating (SVG star icons), name, photo, city, and email. Applied
wp_unslash()to all$_POSTdata on submission. - Honeypot Spam Prevention: Added server-side honeypot field verification to the AJAX submission handler.
- Admin Save and Display: Implemented saving of submitted testimonials as a custom post type with admin display columns for rating and photo, drag-and-drop menu order sorting, and post count display.
- Email Notification: Added automatic admin email notification on new testimonial submission.
- Front-End Output: Added template parts for testimonial cards in loop, single testimonial view, and taxonomy archive pages. Added Prev/Next navigation links.
- Breadcrumbs and SEO: Added breadcrumb and meta tag template parts for the Contact and Testimonials pages.
- Media Upload: Added a Media Upload field to the testimonial submission form with front-end photo output.
- JavaScript Minification: Minified testimonials front-end JavaScript to a production asset.
- Canonical Redirect: Added a 301 redirect from
/page/1/to the canonical root URL for paginated archive pages. - Full-Width Section: Added a Full Width layout option to Page Builder sections using CSS breakout rules, moving section field definitions to a shared trait.
- Animated Counter: Added a counter animation component for displaying numeric statistics.
- Video Controls: Added play button visibility toggle and other control options to background video configuration.
- Footer Background: Added full-width footer background image output.
Version 2.4.11 – Builder Components, Admin Redesign & Multilingual
- Direct Class String Rendering: Refactored front-end output for section, row, column, and block elements to use
get_content()class methods instead of PHP file includes, removing all legacy template files from the theme directory. - Admin Component Output: Added admin metabox output for Title/Subtitle, Media, Button, Features, Posts, and Projects components.
- Admin Styling Overhaul: Redesigned admin form controls with styled checkbox toggles, custom radio fieldsets, CSS filter-based active/inactive state for builder elements (replacing opacity), and moved admin CSS to
admin/css/main.css. - bisteinoff_translated_terms Filter: Introduced the
bisteinoff_translated_termsfilter for hooking multilingual data into term queries. - Custom Post Type Translation: Added support for applying translation metaboxes to custom post types registered via child themes, using an
apply_filters()extension point. - Locale-Aware Date Format: Added a default date format option to enforce consistent date output across locales.
- Multilingual Breadcrumbs: Added multilingual support to the breadcrumbs component, including archive page detection via
page_on_{post_type}. - Hreflang Fix: Corrected hreflang URL generation.
- Body Color Mode Option: Added a body-level color mode option to Theme Design settings.
- Custom_Type_Pages Class: Refactored custom type page detection functions into a
Custom_Type_Pagesclass.
Version 2.4.12 – Slider, Gallery, Code Component & Testimonials Settings
- Slider Component: Added a Slider Page Builder component with admin field configuration and full front-end output, replacing the legacy frontpage sections-based slider.
- Gallery Post Type and Component: Added a
gallerycustom page type, aGalleryhookable class, a Media Gallery metabox, a gallery page template, and front-end gallery rendering with custom CSS. - Code Component: Added a Code Page Builder component with conditional Prism.js enqueuing via the new
BISTEINOFF_CODE_FORMATTINGconstant, loading syntax highlighting only when a code element is present. - Testimonials Settings Page: Added a dedicated Testimonials Settings admin page with options for form title, intro message, modal toggler button, modal title, form layout mode, and display hook placement.
- Testimonials Form Improvements: Added
bisteinoff_kses_formandbisteinoff_array_merge_recursive_distinctsanitization helpers; added rating as a required field when the rating option is enabled; moved theModalsclass to a hookable structure withapply_filters()support. - Builder Screen Support for CPTs: Added
BISTEINOFF_PAGE_BUILDER_SCREENSconstant to control which custom post type screens display the Page Builder metabox. - WordPress Options Tab: Added a new WordPress Options tab in Theme Options with settings to disable the Block API and hide core/plugin/theme admin notifications.
- Media Alt/Title Cleanup: Applied HTML tag stripping and a 12-word limit to auto-generated media alt and title attributes.
- Mobile/Tablet Landscape Breakpoints: Added Mobile Landscape and Tablet Landscape screen types to the
BISTEINOFF_SCREEN_TYPESconfiguration. - WPCF7 Inbound Messages: Added Contact Form 7 Inbound Messages integration to the dashboard.
- Owl Carousel: Added equal-height support and configurable prev/next button offset to the Owl Carousel integration.
Version 2.4.13 – Builder Field Extensions & New Components
- FAQ Component: Added a FAQ Page Builder component with Order and Order By fields for controlling display sequence.
- Custom Posts Component: Added a Custom Posts Page Builder component with grid layout and Owl Carousel output, and validated number fields on save.
- Title Component Fields: Added ID, class, and hide-block fields to the Title component.
- Features Grid System: Added
d-gridrow layout for the Features component with column count driven byrow-cols-*classes. - Column Alignment: Added vertical alignment and width-in-pixels output options for Page Builder columns.
- Order Fields: Added Order and Order By fields to Posts and Projects components.
- Metabox Embed Code Fields: Added embed code fields to the metabox.
- Numeric Input Step: Added a
stepargument to numeric metabox input fields; added select field support with custom option arrays. - Shortcodes in Titles and Slides: Added support for shortcodes in Page Builder section subtitle/title fields and slider slide content.
- Landing Page Template: Added a Landing Page template file.
- Admin Customizer Class: Renamed the admin customizer file and introduced
Bisteinoff\Admin\Customizerclass. - List Item Styling: Added CSS styling for
<li>tags in content areas. - Filetype Link Icons: Added CSS styling for file download links with filetype indicators.
- Related Articles Carousel: Configured Owl Carousel settings specifically for the related articles block.
Version 2.4.14 – Custom Posts Component & Prev/Next Navigation
- Custom Posts Grid and Carousel Styling: Added full CSS styling for the Custom Posts component in both CSS grid and Owl Carousel display modes.
- Prev/Next Post Links: Added Prev/Next navigation links to single post and single testimonial templates.
- CPT Archive H1 Fix: Corrected the H1 output on custom post type archive pages.
Version 2.4.15 – Contact Settings Plugin Compatibility
- Contact Settings Plugin 3.0: Updated the theme’s
Contacthookable class and contact page rendering logic for compatibility with Contact Settings Plugin version 3.0, including updated field interpretation and correct icon output on the contact page. - SEO Admin Module: Moved SEO admin-only logic to
Admin\Moduleswith a dedicated, separately enqueued JS file and corrected script localisation. - Metabox Filter Prefix Fix: Corrected the prefix used in
apply_filters()calls for metabox fields. - SEO H1 on Custom Pages: Fixed SEO H1 output on contact, testimonials, and gallery page types.
- Map on Contact Page: Added Google/Yandex map embed support to the contact page. Added scroll-lock to prevent map interaction during page scroll.
- SEO H1 HTML Tags: Added support for passing HTML tags in the SEO H1 field value.
- Header Padding: Applied the same horizontal padding to the header as to the main content area.
- Breadcrumbs Fix: Fixed
--bst-li-marginCSS variable conflict when breadcrumbs appear inside a content block. - Builder Media Guard: Added a null check before media output in builder components.
Version 2.4.16 – WooCommerce Templates & Builder Fixes
- WooCommerce 10.4.3 Template Update: Updated theme WooCommerce template overrides to match the structure required by WooCommerce 10.4.3.
- WYSIWYG Save Fix: Fixed saving of TinyMCE content from both Visual and Code editing modes in the Page Builder modal.
- CSS Space Variables: Added
--bst-space-*CSS custom properties for consistent spacing across components. - WP Post Gallery: Added a CSS grid layout and FancyBox integration to the native WordPress post gallery.
- Single Post Fixes: Fixed output of author, categories, and tags on single posts to guard against empty values; corrected adjacent post navigation link hover/focus styling.
- Option Panel Null Value Fix: Fixed a null value issue in
Options::get_option()that caused incorrect field rendering in the options panel. - Dev Environment Detection: Improved localhost detection to support hostnames with port numbers.
- BISTEINOFF_TEMPLATEPATH Constant: Removed the deprecated WordPress
TEMPLATEPATHconstant and introducedBISTEINOFF_TEMPLATEPATH.
Version 2.4.17 – Page Type Detection & Options Migration
- Page Type Detection Class: Replaced the
bisteinoff_get_type_of_page()andbisteinoff_get_type_of_page_admin()functions with a dedicated hookable page type detection class. - Options Key Migration: Migrated stored option keys from
theme_optionstobisteinoff_theme_optionsand fromtheme_designtobisteinoff_theme_designto prevent conflicts with other plugins or themes.
Version 2.4.18 – Builder Refactor & WooCommerce Gallery
- Builder Admin Class Rename: Renamed
builder/admin/class-builder.phptobuilder/admin/class-builder-admin.php; refactoredBisteinoff\PageBuilder\Adminand its initialisation and front-end builder classes. - Options Class Refactor: Refactored
class-bisteinoff-options.phpandclass-bisteinoff-security.php; updated allOptions::get_option()calls to remove the now-redundantsanitizeargument, using explicit(bool)or(int)casts at the point of use instead. - Core Class Rename: Renamed the main asset enqueuing class from
class-bisteinoff-customizer.phptoclass-bisteinoff-assets.php. - Theme Design Folder Cleanup: Removed old file structure under
theme_options/tabs/andtheme_design/tabs/, moving tab files directly into their parent directories. Replaced old functions with new class methods and fixed data passing to tab files. - SEO Logic to Classes: Moved SEO admin rendering logic from procedural functions to a dedicated class.
- WooCommerce Builder Gallery: Added a gallery Page Builder component with admin configuration and front-end output.
- Page/Term Context Labels: Added context-aware labels in the admin to distinguish page vs. term metabox configurations.
- SEO Filter: Added the
bisteinoff_page_seo_tagsfilter and made base SEO methods public for child theme extensibility.
Version 2.4.19 – Gallery Asset Optimisation & Contact Map
- Conditional Gallery Script Loading: Extended the asset pipeline to parse page content for gallery components, suppressing gallery scripts and styles on pages where no gallery block is present.
- Gallery Template Layout: Standardised grid padding and item positioning across gallery templates.
- Page Type Detection Refactor: Replaced
bisteinoff_get_type_of_page()andbisteinoff_get_type_of_page_admin()functions with a dedicated hookable page type detection class.
Version 2.4.20 – WooCommerce Hooks & Admin UI
- WooCommerce Archive Hooks: Extended theme template hooks into WooCommerce product archive layouts for consistent brand styling.
- WooCommerce Gallery in Builder: Added gallery output on the front end and in the admin Page Builder interface.
- Contact Form 7 Modal Animation: Added JavaScript height animation to the modal when CF7 performs inline validation or sends a response.
- Admin Panel Styling Fixes: Corrected Theme Options and Theme Design tab file paths and data collection after the folder restructure; fixed tab description filter output; fixed SEO panel description output.
Version 2.4.21 – Dynamic CSS Variables
- CSS Custom Property Output: Updated the dynamic colour system to output theme colour values as CSS custom properties (
var(--bst-*)), simplifying theme colour customisation without SCSS recompilation.
Version 2.4.22 – Core and Builder Hardening
- Options Class Refactor: Completed refactoring of
class-bisteinoff-options.phpandclass-bisteinoff-security.php; removed thesanitizeargument from allOptions::get_option()calls, using explicit(bool)or(int)casts at point of use instead. - Builder Admin Class: Renamed and refactored the Page Builder admin class; separated front-end and admin builder class initialisation.
- WooCommerce Class Refactor: Refactored
/inc/woocommerce/class-woo.phpand extracted WooCommerce constants to/inc/woocommerce/config/constants.php. - Core Class Refactor: Refactored
class-bisteinoff-theme.php,functions.php, and the sub-theme class; renamed the asset class fromclass-bisteinoff-customizer.phptoclass-bisteinoff-assets.php. - PHPDoc Annotations: Marked refactored files as v.2.5.0-ready in their PHPDoc version tags.
Version 2.4.23 – Metabox Architecture Refactor
- Metabox Namespace Restructure: Moved all metabox classes under the
Bisteinoff\Admin\Metaboxnamespace. RenamedBisteinoff\SectionstoBisteinoff\Admin\Metabox\FieldsManager; renamedMetaboxtoMetabox\MetaboxRenderer; renamed the admin customizer file toclass-admin-metabox-handler.php. - Legacy Sections Cleanup: Removed
inc/config/sections.php,sections-readme.txt, and all post-related andprocess_data()methods from theSectionsandSection_Sliderclasses, along with the internalChild_Sectionscall. - Hookable Interface Refactor: Refactored core constants, the
Hookableinterface, and theWrapperhookable base class. - WooCommerce Classes: Refactored all WooCommerce-related classes under
/inc/woocommerce/. - Map Scroll Prevention: Added CSS/JS to prevent Google and Yandex map iframes from intercepting scroll events while the user is scrolling the page.
- Builder Hidden Element Status: Added a visible indicator in the Page Builder admin for elements marked as Hidden, with corresponding CSS class output.
- Post Duplicator Class: Moved post duplication logic to a dedicated
Bisteinoff\Admin\PostDuplicatorclass. - Singleton Admin Loader: Converted the admin loader to a singleton pattern with safety checks for class and method existence before instantiation.
Version 2.4.24 – Object-Oriented Data Layer
- Bisteinoff\Data Classes: Replaced raw functional arrays for interface lists and language definitions with structured PHP classes under the
Bisteinoff\Datanamespace. - Helper Consolidation: Reorganised sanitization, language, and utility helpers into centralised classes under
/inc/helpers/. - Uniform get_instance() Pattern: Converted all instance methods to use a consistent
get_instance()static factory pattern with corresponding safety checks infunctions.php.
Version 2.4.25 – Localisation Fixes & Builder Controls
- Language Name Capitalisation: Fixed the
nameandname_shortparameters for languages whose native script starts with a lowercase letter; added a method to return the language name with a forced initial capital for use in the language switcher. - Social Share Translation Fix: Corrected translated string handling in WhatsApp, Telegram, and email sharing URL construction.
- Translator String Fix: Fixed translator comment format for
sprintf()/printf()strings with%splaceholders to satisfy WordPress i18n standards. - Page Builder Layout Icon Selectors: Added toggleable radio input logic for layout icon selection in the Page Builder admin workspace.
- French and Russian Translations: Updated
bisteinoff.pot,bisteinoff-fr_FR.po/.mo, andbisteinoff-ru_RU.po/.mo.