Inject an instance of \Magento\Catalog\Model\Product\Attribute\Repository
in your constructor (in a block, helper class or wherever):
/**
* @var \Magento\Catalog\Model\Product\Attribute\Repository $_productAttributeRepository
*/
protected $_productAttributeRepository;
/**
* ...
* @param \Magento\Catalog\Model\Product\Attribute\Repository $productAttributeRepository
* ...
*/
public function __construct(
...
\Magento\Catalog\Model\Product\Attribute\Repository $productAttributeRepository,
...
) {
...
$this->_productAttributeRepository = $productAttributeRepository;
...
}
Then create a method in your class to get the attribute by code:
/**
* Get single product attribute data
*
* @return Magento\Catalog\Api\Data\ProductAttributeInterface
*/
public function getProductAttributeByCode($code)
{
$attribute = $this->_productAttributeRepository->get($code);
return $attribute;
}
You can then call this method like so, e.g. inside a .phtml file
$attrTest = $block->getProductAttributeByCode('test');
Then you can make calls on the attribute object, e.g.
- Get options:
$attribute->getOptions()
- Get frontend label for each store:
$attrTest->getFrontendLabels()
- Debug the data array:
echo '> ' . print_r($attrTest->debug(), true);
debug: Array (
[attribute_id] => 274
[entity_type_id] => 4
[attribute_code] => product_manual_download_label
[backend_type] => varchar
[frontend_input] => text
[frontend_label] => Product Manual Download Label
[is_required] => 0
[is_user_defined] => 1
[default_value] => Product Manual Download
[is_unique] => 0
[is_global] => 0
[is_visible] => 1
[is_searchable] => 0
[is_filterable] => 0
[is_comparable] => 0
[is_visible_on_front] => 0
[is_html_allowed_on_front] => 1
[is_used_for_price_rules] => 0
[is_filterable_in_search] => 0
[used_in_product_listing] => 0
[used_for_sort_by] => 0
[is_visible_in_advanced_search] => 0
[position] => 0
[is_wysiwyg_enabled] => 0
[is_used_for_promo_rules] => 0
[is_required_in_admin_store] => 0
[is_used_in_grid] => 1
[is_visible_in_grid] => 1
[is_filterable_in_grid] => 1
[search_weight] => 1 )