phpmagentocategories

Programmatically add Magento products to categories


I am using Magento 1.4.0.1. I have over 21000 simple products, each entered into a single category. There are hundreds of categories in my site. Some products belong in multiple categories. Is there some way for me to programmatically add products into multiple categories?


Solution

  • In PHP code you can put them into the category while you are importing them.

    Say you have a product called $product and a category ID called $category_id

    You can set the categories which a product belongs to by doing the following

    $categories = array($category_id);
    $product->setCategoryIds($categories);
    $product->save();
    

    If the product already has categories and you'd like to add one more then you can use getCategoryIds() like this:

    $categories = $product->getCategoryIds();
    $categories[] = $categoryId;
    $product->setCategoryIds($categories);
    $product->save();
    

    Or, as mentioned by Joshua Peck in the comments, you can use the category_api model to add or remove a product from a category without affecting it's current category assignments:

    Mage::getSingleton('catalog/category_api')
      ->assignProduct($category->getId(),$p‌​roduct->getId());
    
    Mage::getSingleton('catalog/category_api')
      ->removeProduct($category->getId(),$p‌​roduct->getId());