How to remove a product from a category magento 1.

2019-07-15 11:54发布

问题:

I'm kind of new in Magento and I'm working on a cron job that removes a product in a specific category after the date that was assigned. With work and the help of Stackoverflow, I came up with this code:

require_once 'app/Mage.php';
Mage::app();
$date = Mage::getModel('core/date')->date('Y-m-d H:i:s');
$collection = Mage::getModel('catalog/product')->getCollection();    
$collection->addfieldtofilter('news_to_date', array(array('to' => $date)));        
foreach($collection as $product) {        
   $product->setStatus(Mage_Catalog_Model_Product_Status::STATUS_DISABLED);
   $product->save();
 }

This checks the actual date and compares it with the date of the products. If the date has passed, the product is disabled. What I need is that instead of disabling the product, the code should remove the product of the category (in this case the category is 'Sales')

I hope you guys can help me!

Thanks in advance!

回答1:

You need get all category ids from product, then remove Sales category ID from category ids array and set them back to product.

Example, Sales category ID is 5.

foreach ($collection as $product) {
    //Getting all category ids
    $ids = $product->getCategoryIds();
    //Searching array key with value 5 and removing from array
    if (($key = array_search(5, $ids)) !== false) {
        unset($ids[$key]);
        $product->setCategoryIds($ids)
        $product->save();
    }
}

P.S. You can use magento cron job functionality, than you do not need to use:

require_once 'app/Mage.php';
Mage::app();


回答2:

Please do below:

First go to->Catalog menu-->Manage Products-->clink on your product name-->Categories(left side menu bar)-->see right side category name and unchecked the category.