Bunun sizin için çalışması gerekir:
$collection = $this->collectionFactory->create();
$collection->addAttributeToFilter('status', ['in' => $this->productStatus->getVisibleStatusIds()]);
$collection->setVisibility($this->productVisibility->getVisibleInSiteIds());
Kullanılan sınıflar:
/**
* @var \Magento\Catalog\Model\Resource\Product\CollectionFactory
*/
protected $collectionFactory;
/**
* @var \Magento\Catalog\Model\Product\Attribute\Source\Status
*/
protected $productStatus;
/**
* @var \Magento\Catalog\Model\Product\Visibility
*/
protected $productVisibility;
Olası durum veya görünürlük değerlerini almak için başka yöntemleri kontrol etmek için bu sınıfları gözden geçirin.
Bununla birlikte, Magento 2'yi gördüğüm kadarıyla depolar kavramını gözden geçirin, koleksiyon kullanmak yerine ürün verilerine erişmek için havuz kullanılmasını önerir. Örneğin:
$searchCriteria = $this->searchCriteriaBuilder->create();
$products = $this->productRepository->getList($searchCriteria)->getItems();