Magento 2 Get layered navigation filterable attributes list.

Magento 2 Get all the attribute list which are used in Layered Navigation in category page and search page.

You can get all the filterable attribute list by Magento\Catalog\Model\ResourceModel\Product\Attribute\CollectionFactory class.

The result will be all those attributes that have,

  1. Use in Layered Navigation status are Filterable (with results)
  2. Filterable (no results)

You need to create __construct( ) function for define dependency of Class.

<?php
    private $checkoutSession;

    public function __construct(
        \Magento\Catalog\Model\ResourceModel\Product\Attribute\CollectionFactory $productAttributeCollectionFactory
    ) {
        $this->productAttributeCollectionFactory = $productAttributeCollectionFactory;
    }

    public function getFilterableAttributes()
    {
        /** @var \Magento\Catalog\Model\ResourceModel\Product\Attribute\Collection $productAttributes */
        $productAttributes = $this->productAttributeCollectionFactory->create();
        $productAttributes->addFieldToFilter(
            ['is_filterable', 'is_filterable_in_search'],
            [[1, 2], 1]
        );

        return $productAttributes;
    }

Now call a function in template file by iterating over a loop to fetch each attribute code,

$getAttributes = $block->getFilterableAttributes();

    foreach ($getAttributes as $attribute) {
        echo $attribute->getAttributeCode();echo "<br>";
    }

You get all the filterable attributes used for your store.

The Result for Magento 2.4 Store with Sample data installed,

    price
    manufacturer
    color
    activity
    style_bags
    material
    strap_bags
    features_bags
    gender
    category_gear
    size
    eco_collection
    performance_fabric
    erin_recommends
    new
    sale
    format
    style_bottom
    style_general
    sleeve
    collar
    pattern
    climate

This is the list of product attribute which have filterable enable from the Admin panel.