Magento: Load a Product by an Attribute

Today I'm discussing about the Load a product by an attribute filter. At this point we assume that you have set up a new attribute, added it to the appropriate attribute set and set the desired values for the appropriate products.

In this example the attribute identifier is color.

<?php
 
    // Instantiate a product collection object
    $products = Mage::getResourceModel('catalog/product_collection');
     
    // Select which fields to load into the product
    // * will load all fields but it is possible to pass an array of
    // select fields to load
    $products->addAttributeToSelect('*');
     
    // Ensure the product is visible
    $products->addAttributeToFilter('visibility', array('neq' => 1));
     
    // Ensure the product is enabled
    $products->addAttributeToFilter('status', 1);
     
    // Add Color filter
    $products->addAttributeToFilter('color', 'green');
 
    // Limit the collection to 1 result
    $products->setCurPage(1)->setPageSize(1);
     
    // Load the collection
    $products->load();
     
    if ($products->getFirstItem()) {
        $product = $products->getFirstItem();
         
        echo $product->getName();
    }
    else {
        echo 'No products found ' . $name;
    }