Zenny - Accessories WooCommerce WordPress Theme v1.9.0
Fix:
- Add "if ( ! defined( 'ABSPATH' ) ) { exit; }" guard to all theme PHP files to prevent direct file access.
- Add nonce check to AJAX handler bzotech_load_ajax_tool_panel().
- Sanitize/clamp $_GET number, posts_per_page, page inputs (archive.php, index.php, search.php, top-filter.php, shop/product-list ajax handlers...) to prevent abuse via invalid values.
- Harden Bzotech_Template::load_view()/load_view_assets() against path traversal.
- Escape output with esc_html()/wp_kses_post() in ajax tool-panel HTML and yith-compare-button.php icon output.
- Fix fatal TypeError on PHP 8 when AJAX json_decode() returns null (new bzotech_decode_ajax_json() helper).
- Fix "session already active" PHP warnings by guarding session_start()/session_destroy() with session_status().
- Fix double-encoded Google Fonts URL.
- Fix body-background option type (Redux/metabox), reworked to unified "background" control.
- Fix mega menu init timing (hooked to init instead of running at file load).
- Fix Redux config loading too early (deferred to init hook).
- Fix undefined $item_wrap/$item_inner notices in post/product grid templates.
Updated:
- Migrate icon library from Font Awesome to Line Awesome across templates, post-meta output and social icon maps.
- Migrate product gallery/image sliders from Slick to Swiper.js (single product detail templates, quick view) — added 3 missing detail-minimal-style1/2/3.php templates to match the other demo styles.
- Migrate image/video popups from Magnific Popup to Fancybox (Instagram gallery, popup video).
- Consolidate & minify frontend CSS/JS into fewer bundled files (base-style, elementor, side-wide, style, custom-style) for fewer HTTP requests.
- Add no_found_rows to WP_Query calls (search, related/latest products, ajax pagination, widgets) for better query performance.
- Cache repeated option/meta lookups with static vars + object cache for tax attributes.
- Add loading="lazy" to product swatch images.
- Add preconnect hints for Google Fonts.
- Load jquery-elevatezoom only on single product pages; drop unused scripts (slick, magnific-popup, accordionSlider, modernizr, hoverdir, TimeCircles, jcarousellite, mCustomScrollbar, owl.carousel, jquery-ui-tabs/slider) and their library files.
- Preload Elementor header/footer widget CSS/JS earlier to fix missing styles on first load.
- Remove layout-shift "opacity:0" preload rule that could hide page content.
- Plugin BZOTech Core 1.4
Removed:
- Remove unused Elementor "Image Choose" and "Ajax Select2" custom controls (not referenced by any widget).
- Remove the theme's old built-in demo importer and legacy Customizer (Option Tree) integration, superseded by the current import flow.
- Remove unused post-like feature script and dead owl-carousel slider functions (bzotech_owl_slider, bzotech_all_slider — no markup used them).