How to get Current Product & Current Category in Magento 2

If you are wondering how to get/print the information of the current product and even the current category, the topic is all things you need to find.

If you are wondering how to get/print the information of the current product and even the current category, the topic is all things you need to find. Two steps are recommended in this topic, please get them and do any thing you need.

Overview

Step 1: Declare in Mageplaza_HelloWorld

You will use a block class of the module Mageplaza_HelloWorld, then possibly inject the object of \Magento\Framework\Registry in the constructor of the module’s block class.

app/code/Mageplaza/HelloWorld/Block/HelloWorld.php

<?php
namespace Mageplaza\HelloWorld\Block;
class HelloWorld extends \Magento\Framework\View\Element\Template
{
        protected $_registry;
        
    public function __construct(
        \Magento\Backend\Block\Template\Context $context,        
        \Magento\Framework\Registry $registry,
        array $data = []
    )
    {        
        $this->_registry = $registry;
        parent::__construct($context, $data);
    }
    
    public function _prepareLayout()
    {
        return parent::_prepareLayout();
    }
    
    public function getCurrentCategory()
    {        
        return $this->_registry->registry('current_category');
    }
    
    public function getCurrentProduct()
    {        
        return $this->_registry->registry('current_product');
    }    
    
}
?>

Step 2: Get current product in the template phtml file

The current product includes the following information: name, sku, final price, url and associated category ids. And the current category comes with the information as name and url. Now please run the command to print out the current product and the current category.

$myBlock = \Magento\Framework\App\ObjectManager::getInstance()->get('Mageplaza\HelloWorld\Block\HelloWorld');
 

// print current product data
if ($currentProduct = $myBlock->getCurrentProduct()) {
    echo $currentProduct->getName() . '<br />';
    echo $currentProduct->getSku() . '<br />';
    echo $currentProduct->getFinalPrice() . '<br />';
    echo $currentProduct->getProductUrl() . '<br />';
    print_r ($currentProduct->getCategoryIds()) . '<br />';    
}

Step 3: Get current category in the template phtml file

$myBlock = \Magento\Framework\App\ObjectManager::getInstance()->get('Mageplaza\HelloWorld\Block\HelloWorld');
 
// print current category data
if ($currentCategory = $myBlock->getCurrentCategory()) {    
    echo $currentCategory->getName() . '<br />';
    echo $currentCategory->getUrl() . '<br />';        
}
 

This is the guide to get current product and current category in Magento 2. If that you have any queries about the article or any questions in general, use the comment section below!

Recommend Topics

Enjoyed the tutorial? Spread it to your friends!

magento-2-tutorial
featured
how-to
get
current
product
current
category
featured

Sam Thomas
Sam Thomas

CEO and Founder of Mageplaza. Pursueing a simple and healthy lifestyle. A friend, a husband and a dad of two children, a trainer and a wanna-be influencer. He is a big fan of sports and travel, also.

People also searched for

  • magento 2 get current product
  • magento 2 how to get current product
  • category
  • get current product magento 2
  • get current category in magento 2
  • get current category in magento 2
  • magento 2 get current product in phtml file
  • magento 2 get current product id
  • magento 2 get current product in phtml
  • magento 2 get current product in block
  • magento 2.3 get current product
  • magento 2 get current category on product page
  • magento 2 get current category id in phtml
  • how to get current product in magento 2
  • magento 2 get current product id in phtml
  • get current product id magento 2
  • 2.2.x, 2.3.x