2.4.x Generation: Structural Stabilization & Feature Expansion

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 $translated parameter. 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_SLUG and BISTEINOFF_LANG_SLUGS constants. 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, and term_taxonomy database 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 num field 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 Bisteinoff PHP 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 to bisteinoff_ throughout templates, hooks, and shortcodes (e.g. db_embedbisteinoff_embed, db_nav_langsbisteinoff_nav, db_socials shortcode → bisteinoff_socials).
  • Bisteinoff\Customizer Class: Introduced Bisteinoff\Customizer as 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 to inc/woocommerce.php.
  • Gutenberg Control: Added BISTEINOFF_USE_GUTENBERG constant 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.php to inc/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_unslash on save, and front-end output via wpautop.
  • 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 lang attribute 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\Loader to 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.css to a separate footer.min.css file.
  • Admin Actions Hook: Removed the standalone Front Page tab from Theme Options and replaced it with a bisteinoff_frontpage_content action 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_ to bst-/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 Footer class handling output.
  • Page Builder Screen Restriction: Removed Page Builder support from post and product edit screens by default.
  • ThemeSetup Class: Moved the main theme setup function (after_setup_theme actions) to a dedicated ThemeSetup hookable class.

Version 2.4.8 – Internal Naming Standardisation

  • Function and ID Prefix Rename: Completed the rename of all remaining PHP function prefixes from db_ to bisteinoff_, covering template functions, filter names, and utility helpers throughout the theme.
  • Main Theme Class Rename: Renamed class Bisteinoff\Bisteinoff to class Bisteinoff\Theme and its file from class-bisteinoff.php to class-bisteinoff-theme.php.
  • Localization Class: Moved the Poedit/gettext localisation function to a dedicated Localization hookable class.

Version 2.4.9 – Builder Components, Metabox & Styling

  • BISTEINOFF_SCREEN_TYPES Constant: Introduced BISTEINOFF_SCREEN_TYPES configuration 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\Media and added Image Size fields to Page Builder components for use in media output.
  • Metabox Class Refactor: Replaced the old Admin_MetaBox class with a new Metabox class under the Bisteinoff\Admin namespace; 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-inner inner 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 a bisteinoff_contact_icon filter 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-i18n inline 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 TEMPLATEPATH constant with a theme-specific BISTEINOFF_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 $_POST data 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_terms filter 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_Pages class.

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 gallery custom page type, a Gallery hookable 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_FORMATTING constant, 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_form and bisteinoff_array_merge_recursive_distinct sanitization helpers; added rating as a required field when the rating option is enabled; moved the Modals class to a hookable structure with apply_filters() support.
  • Builder Screen Support for CPTs: Added BISTEINOFF_PAGE_BUILDER_SCREENS constant 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_TYPES configuration.
  • 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-grid row layout for the Features component with column count driven by row-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 step argument 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\Customizer class.
  • 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 Contact hookable 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\Modules with 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-margin CSS 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 TEMPLATEPATH constant and introduced BISTEINOFF_TEMPLATEPATH.

Version 2.4.17 – Page Type Detection & Options Migration

  • Page Type Detection Class: Replaced the bisteinoff_get_type_of_page() and bisteinoff_get_type_of_page_admin() functions with a dedicated hookable page type detection class.
  • Options Key Migration: Migrated stored option keys from theme_options to bisteinoff_theme_options and from theme_design to bisteinoff_theme_design to prevent conflicts with other plugins or themes.

Version 2.4.18 – Builder Refactor & WooCommerce Gallery

  • Builder Admin Class Rename: Renamed builder/admin/class-builder.php to builder/admin/class-builder-admin.php; refactored Bisteinoff\PageBuilder\Admin and its initialisation and front-end builder classes.
  • Options Class Refactor: Refactored class-bisteinoff-options.php and class-bisteinoff-security.php; updated all Options::get_option() calls to remove the now-redundant sanitize argument, 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.php to class-bisteinoff-assets.php.
  • Theme Design Folder Cleanup: Removed old file structure under theme_options/tabs/ and theme_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_tags filter 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() and bisteinoff_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.php and class-bisteinoff-security.php; removed the sanitize argument from all Options::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.php and 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 from class-bisteinoff-customizer.php to class-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\Metabox namespace. Renamed Bisteinoff\Sections to Bisteinoff\Admin\Metabox\FieldsManager; renamed Metabox to Metabox\MetaboxRenderer; renamed the admin customizer file to class-admin-metabox-handler.php.
  • Legacy Sections Cleanup: Removed inc/config/sections.php, sections-readme.txt, and all post-related and process_data() methods from the Sections and Section_Slider classes, along with the internal Child_Sections call.
  • Hookable Interface Refactor: Refactored core constants, the Hookable interface, and the Wrapper hookable 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\PostDuplicator class.
  • 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\Data namespace.
  • 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 in functions.php.

Version 2.4.25 – Localisation Fixes & Builder Controls

  • Language Name Capitalisation: Fixed the name and name_short parameters 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 %s placeholders 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, and bisteinoff-ru_RU.po/.mo.
Scroll To Top