Back to Top

Override Product Special Price in Magento 2

Updated 17 June 2024

Hello Friends!
In this blog, we are going to learn how we can override a product’s special price on the category product page and product page.

To override the special price of a product, please follow the below steps:

1. Declare the plugin: First of all, we will declare the plugin in di.xml file inside app/code/Vendor/CustomModule/etc/ directory.

<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
  <type name="Magento\Catalog\Model\Product">
    <plugin name="change_product_price" type="Vendor\CustomModule\Plugin\Catalog\Model\Product" 
      sortOrder="1" 
      disabled="false"/>
  </type>
</config>


2. Define the plugin: To override the special price, we will create the ‘after method plugin’ for getSpecialPrice method of \Magento\Catalog\Model\Product class. Here, we have created the Product.php plugin file inside app/code/Vendor/CustomModule/Plugin/Catalog/Model/ directory.

<?php
/**
 * Vendor Desc.
 * php version 7.3.*
 *
 * @category  Vendor
 * @package   Vendor_CustomModule
 * @author    Vendor
 * @copyright Vendor (https://example.com)
 * @license   https://example.com/license.html
 */
namespace Vendor\CustomModule\Plugin\Catalog\Model;
 
class Product
{
    /**
     * Get product's special price
     *
     * @param \Magento\Catalog\Model\Product $subject
     * @param float $result
     *
     * @return float
     */
    public function afterGetSpecialPrice(
        \Magento\Catalog\Model\Product $subject,
        $result
    ) {
        return 30; //special must be less than product price otherwise it will display the product price
    }
}

3. See the result: Now, we can see the result in the following images. Here, we have created a product with the price $45 and its special price is $40. But after overriding the special price, it will be displayed $30 on the category product page and product details page.

admin1
Created product at admin end
admin2
Set the special price for the product
catpage1
Special Price of the product after overriding the original special price on the category product page
productpage
Special Price of the product after overriding the original special price on view product page

Hope this will be helpful. Thanks ­čÖé

Previous Blog: Detect your device is Mobile or Desktop in Magento 2

Next Blog: Override Product Tier Prices in Magento 2

Searching for an experienced
Magento 2 Company ?
Find out More
. . .

Leave a Comment

Your email address will not be published. Required fields are marked*


Be the first to comment.

Back to Top

Message Sent!

If you have more details or questions, you can reply to the received confirmation email.

Back to Home