How to Restrict Customer to Access Category Page and Redirect to Another Page in Magento 2

How to Restrict Customer to Access Category Page and Redirect to Another Page in Magento 2

Hello Magento pals

I hope you all had a great weekend. So, Christmas is here, and we are all busy doing preparation for this festival of light and joy.We (MageComp) want to wish you a Merry Christmas in advance and Happy new joyful year 2020? 

In Last We have learn How to Create Custom Order Status and State Programmatically in Magento 2, Today We are going to learn how you can restrict visitors to access category pages and redirect them to another page. 

Generally, In default Magento2, every visitor or customer can access all the Magento frontend pages like category pages, product pages, etc.

But what if you want to restrict visitors and customers from accessing a particular page? and also, what if you want to restrict some pages and redirect visitors from that page to another page? 

That another page can be a customer login or particular cms page. 

E.g. : If you want to restrict visitors to access category page and redirect visitors to another page, then with the help of the below code you can achieve that. So let’s get to it.

  1. To do this, create di.xml file inside app\code\Vendor\Extension\etc\ folder and add below code: 
<?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\Category">
        <plugin name="category_page_restrict" type="Vendor\Extension\Plugin\Restrictcategory" sortOrder="1"/>
    </type>
</config>

      2. Next, Create Restrictcategory.php file inside app\code\Vendor\Extension\Plugin\ folder and add below code: 

<?php
namespace Vendor\Extension\Plugin;

class Restrictcategory
{
    protected $_url;
    protected $_responseFactory;
    public function __construct(
        \Magento\Framework\UrlInterface $url,
        \Magento\Framework\App\ResponseFactory $responseFactory
    ) {
        $this->_url = $url;
        $this->_responseFactory = $responseFactory;
    }

    public function afterGetIsActive(\Magento\Catalog\Model\Category $category)
    

        if($category->getData('store_id')==1)//here you change condition as per need
        {   
	   // you can set any redirect url as per your requirement

            $customRedirectionUrl = $this->_url->getUrl('customer/account/login');
 
            $this->_responseFactory->create()->setRedirect($customRedirectionUrl)->sendResponse();
            exit;
        }
    }
}
?>
 
  1. After applying these codes, clean the cache and then refresh it.

So, using the above codes, you can restrict visitors and your customers to access the category pages and redirect them to another page you want. 

If you found this article helpful, then give it a thumbs-up and let us know your reviews in the comments below. Also, please share it with your Magento colleagues and friends. 

Lastly, if you had any problem while implementing these codes or you need any help, then you can contact our Support team here

Again, We want to wish you a Merry Christmas and also want to thank you for taking the time to read this article ??

Previous Article

How to Create Custom Order Status and State Programmatically in Magento 2

Next Article

Steps to Delete and Handle Notifications Messages from Inbox in Magento 2

Write a Comment

Leave a Comment

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

Get Connect With Us

Subscribe to our email newsletter to get the latest posts delivered right to your email.
Pure inspiration, zero spam ✨