Reading list Switch to dark mode

    How to create custom command to delete order in magento2

    Updated 19 January 2023

    How to create custom command to delete order in magento2 – In Magento 2  you can create your own custom command for any action. As magento doesn’t allow to delete order from admin dashboard then in this case there comes a need for how to delete orders. So here using this post I am going to explain how to create your own custom command for deleting magento order.

    For this you just need to follow some easy steps-

    1. Create a Command class in the path<module_dir>/Console/Command (As recommended by magento), like here I am using the path app/code/Webkul/CustomCommand/Console/Command
      namespace Webkul\CustomCommand\Console\Command;
      use Symfony\Component\Console\Command\Command;
      use Symfony\Component\Console\Input\InputArgument;
      use Symfony\Component\Console\Input\InputOption;
      use Symfony\Component\Console\Input\InputInterface;
      use Symfony\Component\Console\Output\OutputInterface;
      use Magento\Sales\Model\Order;
      use Magento\Framework\Registry;
       * Class OrderDeleteCommand
      class OrderDeleteCommand extends Command
           * Order argument
          const ORDER_ARGUMENT = 'order_id';
           * Allow all
          const ALLOW_ALL = 'allow-all';
           * All order id
          const ALL_ORDER = 'All';
           * Order
           * @var Order
          private $order;
           * @var \Magento\Sales\Model\ResourceModel\Order\CollectionFactory
          protected $orderCollectionFactory;
           * @var \Magento\Framework\Registry
          protected $registry;
           * @param ModuleListInterface $moduleList
          public function __construct(
              Order $order,
              \Magento\Sales\Model\ResourceModel\Order\CollectionFactory $orderCollectionFactory,
              Registry $registry
              $this->order = $order;
              $this->registry = $registry;
              $this->orderCollectionFactory = $orderCollectionFactory;
           * {@inheritdoc}
          protected function configure()
                  ->setDescription('Order Delete command')
                      new InputArgument(
                      new InputOption(
                          'Allow all OrderId'
           * {@inheritdoc}
          protected function execute(InputInterface $input, OutputInterface $output)
              $orderId = $input->getArgument(self::ORDER_ARGUMENT);
              $allowAll = $input->getOption(self::ALLOW_ALL);
              if (is_null($orderId)) {
                  if ($allowAll) {
                      $this->registry->register('isSecureArea','true');         //create secure area to delete orders
                      $orderAllColl = $this->orderCollectionFactory->create();  //Get Order Collection
                      foreach ($orderAllColl as $orderCollData) {
                          $orderCollData->delete();                             //Delete Order
                      $this->registry->unregister('isSecureArea');              //unset secure area
                      $output->writeln('<info>All orders are deleted.</info>'); //Displaying output on terminal
                  } else {
                      throw new \InvalidArgumentException('Argument ' . self::ORDER_ARGUMENT . ' is missing.');
                  $orderColl = $this->order->load($orderId);
                  if(empty($orderColl) || !$orderColl->getId()){
                      $output->writeln('<info>Order with id ' . $orderId . ' does not exist.</info>');
                      $this->registry->register('isSecureArea','true');         //create secure area to delete orders
                      $orderColl->delete();                                     //Delete Order
                      $this->registry->unregister('isSecureArea');              //unset secure area
                      $output->writeln('<info>Order with id ' . $orderId . ' is deleted.</info>');
    2. Declaration of Command class in Magento\Framework\Console\CommandList using dependency injection in file path “app/code/Webkul/CustomCommand/di.xml”
      <type name="Magento\Framework\Console\CommandList">
              <argument name="commands" xsi:type="array">
                  <item name="order_delete_command" xsi:type="object">Webkul\CustomCommand\Console\Command\OrderDeleteCommand</item>
    3. Now clear the cache and compile the module.
    4. Now run the following command to check the working process of this commands-
      php bin/magento –list
      now you will see the custom created command as shown in the given screenshotKqikiDw
      Now run command – php bin/magento webkul:orderDelete 1 to delete order with order id 1 through command line. gj7sQbzFor deleting all orders just run the command – php bin/magento webkul:orderDelete -aerLlIh0

    So in this way you can create your own custom commands for any action.

    For complete module please find at .

    You can also check the below links:

    Searching for an experienced
    Magento 2 Company ?
    Find out More

    . . .

    Leave a Comment

    Your email address will not be published. Required fields are marked*

    Be the first to comment.

    Back to Top

    Message Sent!

    If you have more details or questions, you can reply to the received confirmation email.

    Back to Home