We sacrifice by not doing any other technology, so that you get the best of Magento.

We sacrifice by not doing any other technology, so that you get the best of Magento.

Add module.xml file in app/code/Magemonkeys/ShippingHide/etc and copy the following code in it:

<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
	xsi:noNamespaceSchemaLocation="../../../../../lib/internal/Magento/Framework/Module/etc/module.xsd">
    <module name="Magemonkeys_ShippingHide" setup_version="2.0.10">
        <sequence>
            <module name="Magento_Shipping"/>
        </sequence>
    </module>	
</config>

Add registration.php in app/code/Magemonkeys/ShippingHide and copy the following code in it:

<?php
MagentoFrameworkComponentComponentRegistrar::register(
    MagentoFrameworkComponentComponentRegistrar::MODULE,
    'Magemonkeys_ShippingHide',
    __DIR__
);

Add Uninstall.php file in app/code/Magemonkeys/ShippingHide/Setup and copy the following code in it:

<?php

namespace MagemonkeysShippingHideSetup;

use MagentoFrameworkSetupUninstallInterface;
use MagentoFrameworkSetupModuleContextInterface;
use MagentoFrameworkSetupSchemaSetupInterface;
use MagentoConfigModelResourceModelConfigDataCollectionFactory as ConfigCollectionFactory;

/**
 * ShippingHide Uninstall
 */
class Uninstall implements UninstallInterface
{
    /**
     * Config Collection Factory
     *
     * @var MagentoConfigModelResourceModelConfigDataCollectionFactory
     */
    private $_configCollectionFactory;

    /**
     * Initialize Setup
     *
     * @param ConfigCollectionFactory $configCollectionFactory
     */
    public function __construct(
		ConfigCollectionFactory $configCollectionFactory
	) {
        $this->_configCollectionFactory = $configCollectionFactory;
    }
    
    /**
     * Uninstall DB Schema
     *
     * @param SchemaSetupInterface $setup
     * @param ModuleContextInterface $context
     * @return void
     */
    public function uninstall(SchemaSetupInterface $setup, ModuleContextInterface $context)
    {
        $setup->startSetup();
        $this->removeConfig();	
        $setup->endSetup();
    }

    /**
     * Remove Config
     *
     * @return void
     */
    private function removeConfig()
    {
        $path = 'shipping/behavior';
        /** @var MagentoConfigModelResourceModelConfigDataCollection $collection */
        $collection = $this->_configCollectionFactory->create(); 
        $collection->addPathFilter($path);

        foreach ($collection as $config) {
			$config->delete(); 	
        }
    }    
}

Add config.xml file in app/code/Magemonkeys/ShippingHide/etc and copy the following code in it:

<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
	xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Store:etc/config.xsd">
    <default>
        <shipping>
            <behavior>
                <hide>1</hide>
            </behavior>
        </shipping>		
    </default>
</config>

Add di.xml file in app/code/Magemonkeys/ShippingHide/etc and copy the following code in it:

<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
	xsi:noNamespaceSchemaLocation="../../../../../lib/internal/Magento/Framework/ObjectManager/etc/config.xsd">
	<!-- plugin -->		
    <type name="MagentoShippingModelRateResult">
        <plugin name="Magemonkeys_ShippingHide" type="MagemonkeysShippingHidePluginShippingModelRateResult" />
    </type>
</config>

Add system.xml file in app/code/Magemonkeys/ShippingHide/etc/adminhtml and copy the following code in it:

<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
	xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Config:etc/system_file.xsd">
    <system>
        <section id="shipping">
	   <group id="behavior" translate="label" showInDefault="1" showInWebsite="1" showInStore="1" sortOrder="310">
                <label>Behavior of Methods</label>
                <field id="hide" translate="label comment" type="select" sortOrder="10" showInDefault="1" showInWebsite="1" showInStore="1" canRestore="1">
                    <label>Hide Mode</label>
                    <comment>Hides any other shipping methods if free shipping is available.</comment>
                    <source_model>MagentoConfigModelConfigSourceYesno</source_model>
                </field>
            </group>
        </section>
    </system>
</config>

Add Data.php file in app/code/Magemonkeys/ShippingHide/Helper and copy the following code in it:

<?php

namespace MagemonkeysShippingHideHelper;

use MagentoStoreModelScopeInterface;
use MagentoFrameworkAppHelperAbstractHelper;

/**
 * Shipping Hide Helper
 */
class Data extends AbstractHelper
{
    /**
     * Enabled Config Path
     */
    const XML_CONFIG_ENABLED = 'shipping/behavior/hide';
 	
    /**
     * Check Hide mode Functionality Should be Enabled
     *
     * @return bool
     */
    public function isEnabled()
    {
        return $this->_getConfig(self::XML_CONFIG_ENABLED);
    } 

    /**
     * Retrieve Store Configuration Data
     *
     * @param   string $path
     * @return  string|null
     */
    protected function _getConfig($path)
    {
        return $this->scopeConfig->getValue($path, ScopeInterface::SCOPE_STORE);
    }      
}

Add Result.php file in app/code/Magemonkeys/ShippingHide/Plugin/Shipping/Model/Rate and copy the following code in it:

<?php

namespace MagemonkeysShippingHidePluginShippingModelRate; 

use MagemonkeysShippingHideHelperData as ShippingHideHelper;

/**
 * Shipping Result Plugin
 */
class Result
{   
    /**
     * Helper
     *
     * @var MagemonkeysShippingHideHelperData
     */
    protected $_helper;
    
    /**
     * Initialize Plugin
     * 
     * @param ShippingHideHelper $helper
     */
    public function __construct(
        ShippingHideHelper $helper
    ) {
        $this->_helper = $helper;
    }
        	
    /**
     * Return all Rates in the Result
     *
     * @param Result $subject
     * @param Method[] $result
     * @return Method[]
     */	
    public function afterGetAllRates($subject, $result) 
    {
        if (!$this->_helper->isEnabled()) {
            return $result;
        }       		
		$rates = $this->getAllFreeRates($result);              
        return (count($rates) > 0) ? $rates : $result;
    }	
        	
    /**
     * Return all free Rates in the Result
     *
     * @param Method[] $result
     * @return Method[]
     */	
    public function getAllFreeRates($result) 
    {	
		$rates = [];
        foreach ($result ?: [] as $rate) {
            if ($rate->getPrice() < 0.0001) {
                $rates[] = $rate;
            }
        }               
        return $rates;
    }	    
}

Run CLI Commands

rm -rf var/di/* var/generation/* var/cache/* var/log/* var/page_cache/* var/session/* var/view_preprocessed/* pub/static/*
php bin/magento setup:upgrade
php bin/magento setup:upgrade
php bin/magento setup:static-content:deploy -f
php bin/magento cache:clean
php bin/magento cache:flush

Result

No method of free shipping

There is a method of free shipping

 

field_5bfb909c5ccae

    Recent Articles
    Get a Free Quote

      Let’s initiate a discussion!!