Skip to main content

All the HikaShop 6.4 releases. The latest version and the list of all the versions are on the HikaShop Change Log page.

HikaShop 6.4.1

Release date : April, 17 2026

List of all the files changed between the 6.4.1 and the previous version

Bug fixes (54)

  • Contacting the store about an order from the frontend no longer silently fails on WordPress, and after sending the contact request the customer is now taken back to the order page with a confirmation message instead of a blank page. A clear error message is also displayed if the email cannot be sent.
  • The tax type (individual / company with VAT number) and the post-code restriction of tax plans were resolved from the shipping address even when the cart had no product that needed shipping, which could strip the VAT exemption of a B2B customer whose billing address carried the valid VAT ID but whose auto-selected or previously saved shipping address did not. The address type used for these two tax lookups now follows the same need-shipping gate already used for the zone extraction, so the billing address is used when the cart is virtual-only.
  • The checkout could fall into a redirect loop back to the first step when a cart marker changed during step submission (typically when product prices change because the user just registered and now belongs to a different ACL with different prices), because the $checkout_itemid variable was left undefined when the show method was called from submitstep, producing URLs with an empty Itemid parameter.
  • The customer account sidebar is now displayed on the cart show page and the affiliate program page, matching the order listing and address listing pages.
  • On WordPress, the cpanel subpage links (cart, affiliate, etc.) now stay on the account page instead of redirecting to controller-specific pages, so the sidebar remains visible.
  • The WordPress toolbar compatibility class had empty stub methods for save, apply, cancel, new, delete, edit, publish, unpublish, custom, and back buttons, so toolbar buttons were not rendered on WordPress backend pages. They now properly append buttons to the toolbar.
  • The array_unique call on item field category IDs in the product class was missing the assignment, so the deduplication of category IDs was never applied when checking item field category restrictions with sub-categories.
  • The PayPal Checkout plugin could produce an AMOUNT_MISMATCH error when discounts resulted in fractional cent amounts, because the discount in the payment breakdown was rounded independently from the order total. The discount is now computed from the rounded order total to guarantee consistency with PayPal's validation.
  • PHP 8.3 deprecation warning "Using null as an array key" in getCurrentUserAddress when no user is logged in on the frontend.
  • On WordPress, payment plugin end pages (PayPal Checkout buttons, Stripe redirect, etc.) were not displayed after order creation because the showPage method did not account for the plg_ prefix in WordPress extension folder names. The checkout showed "Thank you for your purchase" instead of the payment form.
  • The terms and conditions label on the checkout page was not properly translated when set to a translation key, because the variable holding the param name was overwritten with the uppercase value before writing the translation result back.
  • The Actions button and mass action toolbar buttons on the product, order, category and user listing pages were visible to non-Super Admin backend users who would then get a permission error when trying to use them. Since mass actions can execute MySQL and PHP code, the buttons are now hidden for users without the core.admin permission on com_hikashop.
  • The JHTML select.genericlist WordPress shim was generating a duplicate id attribute when the caller passed an id inside the attribs string instead of using the idtag parameter, causing getElementById lookups to fail.
  • The JHTML select.option WordPress shim was not setting the disable property when the value was false, causing "Undefined property" warnings in code that checks the property (e.g. HikaMarket's plugin restriction form).
  • The JHTML select.genericlist WordPress shim was not handling plain associative arrays (key-value string pairs) which Joomla supports natively, causing options to be skipped in dropdowns built that way.
  • The WordPress frontend routing was intercepting POST form submissions from other components (e.g. com_hikamarket, com_hikaauction) instead of letting their own handlers process them.
  • The JRoute WordPress bridge was not handling URLs for non-HikaShop components (e.g. com_hikamarket, com_hikaauction), causing broken links in plugins that generate frontend or backend URLs for those extensions.
  • Missing divider() method in the WordPress toolbar bridge class could cause a fatal error on backend pages using toolbar dividers.
  • PHP 8.2 deprecation warning "Creation of dynamic property" on the massaction product plugin when deleting products.
  • The view override diff viewer in the backend was not readable in dark mode because the diff colors (red/green backgrounds, line numbers, borders) were hardcoded for light mode only.
  • The shipping and payment methods listing page in the backend could cause a blank screen or run out of memory when many plugin instances with large configuration data were present, because pagination was removed in 6.4.0. Pagination has been restored while properly accounting for single-instance plugins in the total count.
  • File and image uploads via custom item fields on the product page were not saved with the order because the hidden inputs returned by the upload AJAX response were missing the form attribute needed to link them to the product form after the 6.4.0 form restructuring.
  • The previous/next product navigation arrows on the product page were no longer displayed for products with variants because the category lookup was using the default variant ID instead of the main product ID.
  • Google Rich Results flagged invalid carousels on product listing and carousel pages where prices were not displayed, because the ItemList/ListItem structured data was output without the required product offer information. The structured data is now only included when prices are shown.
  • The register button on the registration form was not wrapped in a grid container, causing it to not align with the other form fields when using the grid layout system.
  • The breadcrumb on the product page was generating category links using the product menu item instead of the appropriate category listing menu item, resulting in URLs without the correct menu prefix.
  • The System > Plugins page in the HikaShop backend was listing non-HikaShop system plugins (Joomla core plugins like HTTP Headers, Page Cache, etc.). The query now only includes HikaShop-related system plugins.
  • PHP warnings "Attempt to read property params on array" on the System > Plugins page for the geolocation, remarketing, analytics, and recaptcha plugins when their params were not properly initialized as a Registry object.
  • Adding a product with variants to the cart from the product page would always add quantity 1 regardless of the quantity entered, and custom item fields were not included. This was caused by the form restructuring in 6.4.0 where the form no longer wraps the entire product page, leaving quantity, product_id, and custom field inputs disconnected from the form used by the add-to-cart AJAX call.
  • The order status dropdown on the backend orders listing was no longer displayed, and order statuses were shown untranslated. This was caused by the import button feature overwriting an internal variable used to detect popup context.
  • Embedding images in emails could fail with "Could not access file" when the email template used relative image URLs (e.g. media/com_hikashop/images/mail/header.png) instead of absolute URLs. The embed function now resolves relative paths to absolute file paths.
  • Google Rich Results flagged products without prices on category listing and carousel pages as missing required "offers" field, because the templates used schema.org/Product instead of schema.org/ListItem for each item in the ItemList structured data.
  • The aggregateRating in the JSON-LD structured data on the product page was missing the bestRating property, and empty product descriptions were output as empty strings instead of being omitted.
  • On WordPress, the element-invisible CSS class used for screen-reader accessible labels was not applied in the backend because the rule was only scoped for the frontend wrapper.
  • The breadcrumb on the product page was showing the default variant name instead of the main product name when the product had variants.
  • We fixed a fatal error "Cannot redeclare" on WordPress when uploading a new version of the HikaShop plugin while the previous version is still active. WordPress loads both copies during the upgrade process, causing function redeclaration errors. We added a double-load guard and function_exists() checks to prevent this.
  • We fixed an issue on WordPress where switching between editions (e.g. installing Starter over Business or vice versa) would not update the edition level in the database, causing features from the previous edition to remain active or the configuration page to crash.
  • We fixed an issue in the iVeri payment plugin where hardcoded placeholder URLs (127.0.0.1) were used for the callback URLs instead of the actual site URL.
  • We fixed an issue on WordPress where installing a HikaShop package with a different ZIP folder name (e.g. com_hikashop_starter) over an existing installation could create a duplicate plugin folder instead of upgrading, causing fatal errors.
  • We fixed an issue on WordPress where the Payment Methods and Shipping Methods links in the HikaShop menu bar would highlight the Plugins menu item in the WordPress sidebar instead of the correct Payment or Shipping menu item.
  • We fixed the wrong translation key ONLY_FROM_BUSINESS used in the plugin edit form access level area; it should be ONLY_FROM_HIKASHOP_BUSINESS.
  • We fixed PHP 8.1 deprecation warnings when passing null values to json_decode() and explode() in the checkout workflow type.
  • We fixed PHP 8 warnings "Undefined array key" for 'name' and 'params' in the checkout workflow editor when step data didn't contain these keys.
  • We fixed PHP 8 warnings "Trying to access array offset on null" in the field class when the categories parameter was null, which could happen during order deletion and cause a visual gap on WordPress.
  • We fixed the cancel button on the plugin edit page redirecting to the generic Plugins page instead of the correct Payment or Shipping page on WordPress.
  • We fixed the missing plugin upload interface on WordPress when accessing the "Install Plugin" page. The install template was never created despite the controller, view function, language keys, and menu entry all being in place.
  • We fixed the plugin installer on WordPress using a WordPress-specific nonce instead of HikaShop's standard JSession token check, causing "Security check failed" errors when uploading plugins.
  • We fixed a fatal error during order creation when the selected payment method type does not correspond to an installed payment plugin. The order creation now gracefully skips the payment plugin confirmation step when the plugin cannot be loaded.
  • We fixed a fatal error "Call to a member function get() on null" when saving a variant with a zone-restricted price, because the zone class was not loaded in the variant editing view.
  • Selecting an image from a subfolder in the gallery popup on the product edit page would not add the image to the product. The path traversal security fix was rejecting gallery paths starting with a slash and stripping the subfolder component with basename().
  • HikaShop popups were not visible when opened while scrolled down on a page and Joomla's "Increased Contrast" accessibility option was enabled. The CSS filter on the body element broke position:fixed positioning, causing the popup to appear above the visible area. The popup system now detects the filter and compensates by adjusting the positioning to the current scroll offset.
  • HikaShop popups had a large gap at the top on small screens (e.g. tablets, embedded displays) because of a hardcoded 160px top padding on the popup container. The popup layout now uses flexbox centering with auto margins so that small popups are vertically centered on large screens and fully visible on small screens.
  • We fixed an intermittent "Invalid notification" error with the Authorize.net SIM payment plugin caused by invisible Unicode control characters (bidirectional formatting markers) in customer address fields. These characters could be pasted from mobile apps or web pages and would cause the SHA-512 hash validation to fail. The plugin now strips Unicode control and formatting characters from all address fields before sending them to Authorize.net.
  • Fixed file downloads returning "File not found" for product files stored at absolute paths within the Joomla root directory. The path traversal security check added in 6.4.0 was too restrictive, only allowing files inside the secure upload folder instead of also allowing files anywhere under JPATH_ROOT like the previous version did.

Improvements (32)

  • The order contact page now honors the title set by the view (menu heading or titles rewritten by extensions such as HikaMarket for sub-order contacts), instead of always falling back to "Order: <number>" when an order was loaded.
  • The WordPress URL routing now uses a filterable controller-to-page mapping (hikashop_wp_ctrl_page_map) instead of a hardcoded switch, allowing extensions like HikaSerial, HikaMarket, and HikaAuction to register their own controllers. Unknown controllers now stay on the current page instead of redirecting to the shop page.
  • The WordPress database compatibility layer now detects any alias used for the users table in SQL queries (not just "juser") and rewrites Joomla column names (name, username, email, block) to their WordPress equivalents (display_name, user_login, user_email, user_status). In SELECT clauses, rewritten columns use AS aliases so PHP code reading $row->username still works. Queries using alias.* are expanded to explicit column lists with proper aliases. This fixes queries from extensions like HikaSerial that use different aliases or select all columns.
  • Added a JCrypt / Joomla\CMS\Crypt\Crypt compatibility shim for WordPress, providing genRandomBytes, timingSafeCompare, and safe_strlen using PHP 7+ native functions. This allows extensions that use Joomla's crypt utilities to work on WordPress.
  • The "Round prices during calculations" setting now has a third option: "Yes, without rounding increment". This rounds prices during calculations using the currency's decimal places (for payment gateway compatibility) but applies the rounding increment (e.g. 500 yen, 0.05 CHF) only at display time, avoiding per-item accumulation errors with large increments.
  • The order auto-cancel plugin now has a configurable "Order statuses to cancel" setting, allowing administrators to select which order statuses should be targeted for automatic cancellation (e.g. both "Created" and "Pending"), instead of only targeting the "Created" status.
  • The order auto-cancel plugin now has separate settings for the cron run frequency and the order age threshold before cancellation, instead of a single setting controlling both. Cancelled orders also get a history entry indicating the automatic cancellation reason.
  • Added a new "delay" Joomla form field type for HikaShop plugin settings, displaying a numeric input with a time unit dropdown (hours, days, weeks, months) instead of requiring raw seconds input.
  • The PayPal Checkout plugin no longer depends on the deprecated paypal/paypal-checkout-sdk PHP library (67 files, 603KB). All API calls now use a lightweight built-in API class with direct curl calls, reducing the plugin size and eliminating external dependency management.
  • The image gallery browse popup now remembers the last browsed folder in the user session, so reopening the popup loads the previously selected folder instead of starting from the root.
  • The customer account cpanel now triggers the onBeforeFrontendOrderListing event when loading the last orders widget, allowing plugins to filter orders from the cpanel the same way they can on the order listing page.
  • Price cells in order tables and email templates no longer wrap the currency symbol to a new line in locales where the symbol appears after the number (e.g. German). Added white-space:nowrap to price cells in the frontend and backend order views, invoice, and all order email templates.
  • When changing the customer on a backend order, the address selector dropdown now also shows unpublished addresses in a separate group labeled "Old addresses" for registered users or "Previous orders addresses" for guests, so that addresses from previous orders are always accessible even if the customer deleted them from their account.
  • The datepicker custom field type now supports wildcard characters (*) in the year position of the excluded dates setting. You can use patterns like 4/5/* to exclude April 5th every year instead of having to add a new entry for each year.
  • The datepicker custom field type now supports wildcard characters (*) in any position of the excluded dates setting. You can use patterns like */2/* to exclude all of February every year, */2/2026 to exclude February 2026 only, or 4/*/* to exclude all of April every year.
  • Added a marketplace card at the bottom of the Payment Methods, Shipping Methods, and Plugins listing pages, with contextual links to browse and request plugins on the HikaShop marketplace.
  • The UCP plugin now uses opaque random session tokens in checkout session IDs instead of sequential database IDs, making session URLs unguessable.
  • The UCP plugin now supports multiple API keys via a repeatable subform field, allowing each client (AI platform, agent) to have its own key.
  • Improved error handling in the UCP plugin checkout completion flow to properly handle payment processing failures.
  • On WordPress, after uploading and installing a HikaShop plugin, the user is now redirected to the plugin edit page (or the new method creation page for payment/shipping plugins) instead of the plugins listing.
  • On WordPress, plugin upgrades now merge new files over the existing installation instead of deleting the entire folder first. This preserves user-installed HikaShop extensions in back/extensions/ and uploaded files that would otherwise be lost during upgrades.
  • Updated the license declaration in the WordPress readme.txt and plugin header to GPLv3 to match the license used across the codebase.
  • Added an "External Services" section to the WordPress readme.txt documenting connections to hikashop.com (help documentation, language files) and payment/shipping gateway APIs, in preparation for WordPress.org plugin directory submission.
  • On WordPress, the Starter edition now relies on the WordPress.org update system instead of the custom HikaShop update checker. The "Check now" button is hidden on WordPress, while the upgrade buttons to Essential/Business remain available.
  • The direct file access protection header now checks for both _JEXEC and ABSPATH, ensuring compatibility with both Joomla and WordPress environments.
  • Removed the bundled jquery.min.js file from all editions as it is no longer needed. Joomla 3+ provides jQuery natively, and WordPress uses its own copy.
  • Comments are now preserved in the wordpress/ PHP files during packaging to keep translators comments required by the WordPress.org Plugin Check tool.
  • The PayPal Checkout payment page now displays an order summary alongside the payment buttons in a two-column layout, showing product lines, totals, and addresses so that customers can review their order before paying.
  • When the price calculation plugin modifies a product's price and the product has grouped options in the checkout cart, the base price displayed next to the product name now shows the original price before the calculation instead of the calculated total. This prevents confusion when the calculated add-ons are also listed separately below.
  • Auto-discovered module blocks in the WordPress Gutenberg editor now render list and radio XML field types as dropdown selects instead of plain text inputs, matching the expected behavior for fields with predefined options.
  • Improved WCAG accessibility for the datepicker custom field: added aria-live region on range date display so screen readers announce date selections and night count, added aria-label and aria-haspopup on popup datepicker inputs, added aria-label on the calendar icon button, and added role="application" on inline and range calendar containers.
  • Shipping plugins can now validate addresses on save via the onBeforeAddressCreate and onBeforeAddressUpdate events, which now also import hikashopshipping plugins in addition to hikashop plugins.

New features (14)

  • The PayPal Checkout plugin now supports payment method vaulting for recurring payments. When used with a recurring orders plugin, the customer is redirected to PayPal to approve saving their payment method. The vault token is stored on the customer account and can be used for merchant-initiated charges on subsequent orders via the onOrderAuthorizationRenew hook. This is also compatible with HikaSerial's recurring subscriptions and replaces the need for the older PayPal Recurring payment plugin (which used the deprecated NVP/IPN API).
  • Added an ordering column to zones so that administrators can control the display order of countries and states in dropdown menus. Zones with a non-zero ordering value are sorted first (ascending), followed by the remaining zones in alphabetical order. The ordering can be set via the zone edit form or via the ordering column on the zones listing page.
  • The shipping block on the checkout now has a "Dynamic address refresh" setting (enabled by default). When the shipping and address blocks are on the same checkout step, shipping methods automatically refresh as the user edits address fields (country, state, city, postal code, street) without requiring the address to be saved first. The feature detects whether the user is editing a shipping address or a billing address with the "same address" option checked, and handles the country-to-state dropdown cascade properly.
  • The UCP plugin now supports the W3C WebMCP standard (navigator.modelContext). When enabled, HikaShop registers commerce tools (search products, create/update/complete checkout, list payment methods) that browser-based AI agents can discover and call directly. The tools call the existing UCP REST endpoints using the visitor's browser session for authentication, so no API key is exposed in the frontend.
  • Added hasMerchantReturnPolicy structured data support in the Google Products plugin. You can now configure your return policy type (finite window, unlimited, not permitted), return window in days, applicable countries, return fees, and return policy page URL. The return policy is included in the JSON-LD on product pages and in the OpenAI shopping feed. A per-product override field setting allows referencing a product custom field to use a different return policy type for specific products (e.g. non-returnable personalized items).
  • Added shippingDetails structured data to the JSON-LD on product pages, generated from the existing shipping setting in the Google Products plugin. Each configured shipping rule (country, region, rate, handling time, transit time) is output as an OfferShippingDetails object in the offer, enabling Google Merchant listings shipping details. Per-product shipping overrides via custom fields are now supported in JSON-LD, using the same resolution pattern as the Google Merchant XML feed.
  • Added two new plugin events for the product page structured data (JSON-LD): onHikashopMicrodataProductInfo to modify the JSON-LD object before injection, and onHikashopMicrodataExtraObjects to add extra JSON-LD blocks. This allows plugins to enrich the microdata for specific product types such as hotels or events.
  • The WordPress bridge now auto-discovers external modules (mod_*) installed in the extensions directory and automatically generates WordPress widgets and Gutenberg blocks from their XML manifests, without requiring any WordPress-specific code in the module.
  • The WordPress plugin installer now supports uploading module ZIP packages (type="module") in addition to plugins.
  • Added an EC-CUBE v4.1 migration tool to import taxes, categories, products (with variants and prices), product images, customers, addresses, orders, and order items from an EC-CUBE database into HikaShop.
  • The datepicker custom field type now supports a range mode for check-in / check-out date selection. When enabled, the field renders as a single inline calendar with two-month display where the user clicks once for the start date and again for the end date, with visual range highlighting. Configurable options include minimum and maximum number of nights, and whether the last day is excluded from booking (hotel convention). All existing exclusion rules (forbidden weekdays, excluded dates, wildcard patterns, future/past restrictions, waiting days) are enforced against every day in the selected range.
  • The filter system now supports plugin-provided filter types and filter data types. Plugins can register new filter display types via the onFilterTypeDisplay event and new data types via the onFilterDataLoad event, following the same extensibility pattern as the custom field system. The factory methods _getFilterTypeClass and _getFilterDataClass handle class loading, with onInitFilterTypeClass as a fallback event for plugins providing multiple filter types.
  • The advanced date picker plugin now provides two new filter display types: a single date picker filter and a date range picker filter. The single date picker supports inline or popup mode, multi-month display, optional margin days with a customer-facing checkbox, and dynamic display restricting selectable dates to those present in the product set. The range date picker renders a single inline calendar with two-click range selection and visual range highlighting, reusing the existing range datepicker component. Both types read date constraints (future/past only, waiting days) from the custom field definition and support filtering on both product custom fields and item custom fields.
  • When a filter on the product listing targets a custom item field (e.g. a booking date picker), the selected filter value is automatically passed to the product page via the product link, pre-filling the corresponding item field so that the customer does not have to re-select the same value.

 

HikaShop 6.4.0

Release date : March, 6 2026

List of all the files changed between the 6.4.0 and the previous version

Bug fixes (40)

  • We fixed an issue where zone-restricted prices were not properly filtered on product listings, causing the wrong price to be displayed. The zone restriction was only applied on the product detail page and cart but not on product listings.
  • We fixed an issue where embedding images in emails would fail when the image URL used a different scheme (http vs https) or www prefix than the site URL configured in Joomla, resulting in a "Could not access file" error preventing the email from being sent.
  • We fixed a PHP warning "Undefined property: stdClass::$payment_price" on the payment methods listing page when a payment method had no price set.
  • We fixed an issue where importing a CSV with tax-inclusive prices would overwrite the tax category of variants from "like parent product" to the default tax category, resulting in incorrect tax category assignments and potentially wrong price conversions.
  • We fixed an issue in the mass action system where filtering on price columns could result in duplicate rows in the results when products had multiple prices.
  • The mass action CSV export now correctly calculates the taxed price for product variants which inherit their tax category from their parent product.
  • We fixed an issue where Google Search Console would only detect the main variant of a product instead of all variants, because inline microdata on the product page conflicted with the JSON-LD structured data. We removed all inline microdata (itemprop/itemscope) from product page templates and vote templates so that the JSON-LD is the sole source of structured data.
  • We rewrote the JSON-LD structured data generation on the product page to properly use ProductGroup with hasVariant for products with variants, so that Google detects all variants individually with their own prices, stock status, images, and characteristics.
  • We fixed the JSON-LD structured data so that it works without requiring the Google Products plugin to be configured, using sensible defaults when the plugin is absent.
  • We fixed an issue where the product description in the JSON-LD structured data could exceed Google's 5000-character limit when the product had long content (tables, FAQs, full copy), causing Google Search Console "description too long" errors for ProductGroup and Product entries. The description is now truncated to 5000 characters.
  • We fixed the inverted ItemList schema markup in the product listing and carousel templates where individual product items were incorrectly marked as ItemList and the container was marked as itemListElement.
  • We fixed a MySQL query error during the update / install process due to a typo with the modifications made for the currencies default settings in HikaShop 6.3.0.
  • We've fixed an issue where plugins relying on the HikaShop cron could get seen as uninstalled by Joomla in some cases during cron tasks, following a previous fix with the saving of plugin settings during cron tasks.
  • When products were configured with several prices restricted to different conditions, the correct price was not always loaded due to an improvement in the previous version.
  • The activation link would not work properly on Joomla 6.
  • We've fixed several issues with Google Pay in the PayPal Checkout payment plugin that could prevent the Google Pay button from appearing or payments from being captured properly.
  • We've fixed several issues with Apple Pay in the PayPal Checkout payment plugin, including a TypeError on non-Apple devices and missing billing contact information.
  • We've fixed the 3DSecure settings and information display on the PayPal Checkout payment plugin.
  • We fixed a false duplicate alias error when saving products with variants. The alias uniqueness check was matching against variant rows which share the parent product alias, causing a false positive.
  • We fixed an issue which could lead to the interface customization of the product edit page messing with the description HTML editor which wouldn't display correctly.
  • The category explorer would not display properly when being folded in the backend products and categories listing pages following changes to the CSS grid system in a previous release.
  • The saving of a view override on the backend could result in the page being displayed without the backend template.
  • We've fixed missing CSS and JS for the address layout builder.
  • We fixed a warning on the dashboard with "table" widgets.
  • We fixed a SQL error on dashboard map widgets with MariaDB strict mode.
  • We fixed PHP errors in the map widget template.
  • We've fixed a layout issue on the backend customer edit form when the affiliate system is activated.
  • We've fixed the width of the weight unit selector for the variant edit form in the backend.
  • We've fixed a backward compatibility issue with HikaSerial's dashboard.
  • We fixed a warning in HikaShop Essential on the cron task tab of the HikaShop configuration.
  • We fixed a warning with the default layout of the product page.
  • We fixed a PHP warning which could happen on the category listing page when an image file couldn't be read properly.
  • We fixed a PHP warning which could happen when generating thumbnails and checking sizes for invalid or unreadable image files.
  • We fixed an issue where generated thumbnails could fail to display because the thumbnail folder path used scaled image dimensions instead of the configured thumbnail dimensions.
  • Modules under the product page could have the translated canonical URL of another language in some cases.
  • We fixed a warning which could appear in some rare cases on the checkout with the previous version of HikaShop.
  • We fixed a deprecated message with custom fields in some rare case on PHP 8.4.
  • We've fixed several issues with the vote system: JavaScript crash on some pages, tooltip HTML breaking the page DOM, vote stats returning zeros on comment-only submissions, and various other JavaScript bugs.
  • We fixed the affiliate commission not being calculated when using the category restriction feature.
  • We fixed the Joomla 4+ plugin compatibility layer so that it correctly handles typed Joomla events with no named arguments (such as GetKeyEvent or SetCachingEvent). Previously, the argument mapping would crash when the event object had no arguments to extract. The layer also now uses the addResult() method instead of the deprecated setArgument() for returning results, as required by Joomla 6.

Improvements (42)

  • The Google Products plugin now automatically adds the native_commerce attribute to all products in the feed when the UCP plugin is enabled, making them eligible for Google's UCP-powered checkout.
  • The product_sort_price field is now automatically recalculated on the product detail page when it doesn't match the current public price, so that price-based sorting in product listings stays accurate without requiring a manual recalculation.
  • The product condition in the JSON-LD structured data now uses the product-level setting with a fallback to the Google Products plugin default, instead of always defaulting to NewCondition.
  • We improved the handling of review authors in the JSON-LD structured data by resolving the username from the database when the vote pseudo is empty, and skipping reviews without an identifiable author, as required by Google.
  • Language files are now automatically updated when a new version of HikaShop is installed. On each admin session, HikaShop checks if the installed language files are outdated and downloads the latest versions from the server. On WordPress, the wordpress.ini translation files are also updated automatically.
  • The default product page image size for new installs has been increased from 100x100 to 300x300 pixels.
  • The "Simplified breadcrumbs" setting now has a third "Auto" mode which automatically builds the full breadcrumb path (Home > Category > Product) using the product's main category, while keeping clean URLs without the category_pathway parameter. This new mode is now the default for new installs.
  • We've improved the address form layout configuration interface so that the behavior of the tool when drag&dropping fields around is smoother.
  • We've added a weight and a volume column to the orders listing in the backend.
  • We've added shipping price and payment fee columns to the backend order listing (hidden by default).
  • We improved the display of microdata for the price with the reversed and tabular layouts of the product page.
  • We've improved the decoding of serialized data.
  • We've improved the look of the tabs in the tabular product page layout.
  • We've improved the display of the drawer mode for the HikaShop cart module.
  • HikaShop now properly supports child templates for view overrides.
  • We've improved the support for newer versions of jQuery.
  • The product page layouts have been modified to not have a form HTML element around the whole page. This allows for greater flexibility with customization, allowing you to add elements with forms, like modules, inside the product page layout.
  • The IP address resolver in HikaShop now supports CloudFlare, Sucuri, Incapsula / Imperva and Nginx reverse proxy in order to improve capturing the correct IP address for customers.
  • We've improved the loading of filters configured to use fields so that when the field is removed, the filter doesn't generate an error.
  • The view override "diff" mechanism has been restyled and reworked so that it is more useful and looks correct.
  • When a mass action is manually processed in the backend, there is now a result message.
  • We've optimized the backend vote listing by batch-loading product names and user info.
  • We've added CSRF token validation to vote AJAX requests.
  • The Google Products plugin now skips products with zero price to avoid Google Merchant Center rejection.
  • We've improved the contact form error handling when email sending fails.
  • We've added duplicate withdrawal request detection to prevent users from submitting multiple withdrawal requests for the same order.
  • Plugins of the group "hikashop" not supporting multiple instances are now listed in the System>Plugins menu.
  • We improved the thumbnail generation performance by skipping regeneration when a valid thumbnail already exists and the source image has not changed.
  • The image helper now preserves ICC color profiles when resizing JPEG images with GD, preventing the color shifts that occurred because GD strips ICC data during processing. The ICC profile is extracted before resizing and re-injected into the output file afterward.
  • The PayPal Express payment plugin now blocks known bots from initiating orders via the PayPal Express button.
  • The PayPal Express payment plugin now prevents duplicate order creation when the PayPal Express button is clicked multiple times, by detecting if a pending order already exists for the same cart.
  • When linking directly to a product variant via URL, the characteristics are now automatically pre-selected even when the "Characteristics dynamic display" setting is enabled.
  • When Joomla's page cache is enabled, cached pages now vary by currency so that visitors with different currencies (e.g. via geolocation or the language-to-currency plugin) see the correct prices instead of the currency from the first cached visit. :: https://www.hikashop.com/forum/5-support-en-francais-french-support-/910178-la-devise-affichee-ne-tient-pas-compte-de-l-ip-si-le-cache-est-active.html#370789
  • We improved WCAG 2.2 accessibility compliance across the frontend and backend: added visible focus indicators on dropdown and button elements, added scope="col" to data table headers, added visually hidden labels to search inputs and select-all checkboxes, added screen-reader-only text for star ratings, replaced clickable table cells with proper button elements for the useful/useless vote actions, and added thead/tbody structure to the product comparison table.
  • We further improved WCAG 2.2 accessibility: added focus styles alongside hover on product/category name links and checkout cart rows, added visible focus indicator on backend namebox inputs, added Enter/Home/End keyboard support to dropdown menus, added accessible text to the icon-only empty cart link, added a visually hidden legend to checkout fieldsets, and added screen-reader text for out-of-stock product variants.
  • We added screen-reader accessible text and aria-hidden on decorative icons across multiple frontend and backend views: login form forgot password/username links, order listing show/hide product buttons, product carousel prev/next buttons, discount selection search/reset buttons, address layout field controls, and product edit block controls.
  • We added role="alert" to error and warning messages so screen readers announce them, and added aria-live="polite" to the cart module so cart updates are announced to assistive technology users.
  • We replaced non-semantic clickable spans and divs with proper button elements for the filter toggle, product image prev/next navigation, and backend product block controls (width/columns/toggle), improving keyboard accessibility (WCAG 2.1.1). We also added accessible text to the product image prev/next buttons.
  • We added aria-describedby error spans to form fields (address, registration, custom item, contact, and order fields) so that screen readers can announce per-field validation errors. Fields now set aria-invalid when validation fails and display the specific error message next to the input (WCAG 3.3.1).
  • We improved accessibility of vex popup dialogs: added role="dialog", aria-modal, and aria-label attributes, implemented focus trapping so keyboard users cannot Tab out of the dialog, made the close button keyboard-accessible, and focus is now restored to the trigger element when the dialog closes (WCAG 2.4.3).
  • We added keyboard move buttons (up, down, previous/next position) to the view builder blocks as an alternative to drag-and-drop reordering, so that keyboard-only users can rearrange blocks without a mouse. All action buttons now appear on hover/focus for a cleaner interface (WCAG 2.5.7).
  • We added keyboard alternatives to all drag-and-drop interfaces in the backend: move buttons on product edit form blocks and grip handles with arrow keys on block fields, move buttons on dashboard configuration rows and widgets, and move buttons on address layout builder fields. Controls appear on hover or keyboard focus. We also fixed a pre-existing bug where mouse-resizing address layout fields could not increase their width (WCAG 2.5.7).

New features (14)

  • HikaShop now works on WordPress. You can use the same install zip file on WordPress' "Add plugin" upload form and then activate it. HikaShop will work basically the same as on WordPress. With a few changes here and there to adapt to how WordPress works.
  • We've added a UCP (Universal Commerce Protocol) plugin to HikaShop. Once configured and enabled, it allows AIs to purchase on your store for their users.
  • The Google Products plugin can now generate an OpenAI / ChatGPT Shopping product feed in JSON format alongside the existing Google Shopping XML feed. It includes all required and recommended fields such as reviews, star ratings, variant attributes, store country, target countries, return policy and eligibility flags. The JSON feed is saved to a publicly accessible file that OpenAI can crawl, and is automatically regenerated by the cron alongside the Google feed.
  • We've added 5 new and modern layouts for the product page on top of the "default", "reversed" and "tabular" layouts.
  • The customization capabilities of the product edit page have been improved in the backend. Now, each block can be resized and options inside each block can be split into 1, 2 or 3 columns.
  • Custom fields of the table "product" now have a new display setting you can activate so that they get displayed in their own tab in the tabular layout of the product page.
  • There is now a "translatable" flag which can be added by payment and shipping plugin developers in the pluginConfig array in order to make text options translatable by the user. The "information" setting of the Bank transfer, Check, Credit card, Purchase Order and Western Union payment plugins can now be translated easily via the available translation interface.
  • We've added an "import" button to the backend orders listing to be able to easily import orders to HikaShop.
  • The tag {VAR:order.order_geolocation_country_code} is now available in order emails in HikaShop Business in order to provide the country code retrieved by the geolocation plugin based on the IP of the customer.
  • There is now a "+" icon for the images option of payment and shipping methods so that you can easily add extra images.
  • We've added a new migration tool from one website with HikaShop to another one. With it, you can migrate from one Joomla to another, one WordPress to another, from a Joomla to a WordPress or from a WordPress to a Joomla.
  • On the HikaShop configuration page, below the version number, we've added a "Check updates" button and buttons to upgrade to Essential / Business if you're on the Starter / Essential edition and you've purchased an upgrade.
  • HikaShop constants can now be overridden from a system plugin, before HikaShop is being loaded.
  • We've added include/exclude toggle and multi-select support for warehouse restriction on shipping methods.