Sometimes when you have an offline customer who does not have knowledge of the online structure. In this situation, you might require to create a customer programmatically in Magento 2.
Steps to Create Customer Programmatically in Magento 2
All you need to do is pass the required parameter to the customer array as mentioned below, create a PHP block or helper file and call createCustomer() function:
<?php $customerInfo =[ 'customer' =>[ 'firstname' => 'MageDelight', 'email' => '[email protected]', //customer email id 'lastname' => 'solutions', 'password' => 'admin123', 'prefix' => 'The', 'suffix' => '' ] ]; $block->createCustomer($customerInfo); ?>
In Block file, Pass customer required data from above $customerInfo array,
<?php namespace MD\CreateCustomer\Block; class Customer extends \Magento\Framework\View\Element\Template { public function __construct( \Magento\Framework\View\Element\Template\Context $context, \Magento\Store\Model\StoreManagerInterface $storeManager, \Magento\Customer\Model\CustomerFactory $customerFactory, array $data = [] ) { $this->storeManager = $storeManager; $this->customerFactory = $customerFactory; parent::__construct($context, $data); } /** Create customer * Pass customer data as array */ public function createCustomer($data) { $store = $this->storeManager->getStore(); $storeId = $store->getStoreId(); $websiteId = $this->storeManager->getStore()->getWebsiteId(); $customer = $this->customerFactory->create(); $customer->setWebsiteId($websiteId); $customer->loadByEmail($data['customer']['email']);// load customer by email address if(!$customer->getId()){ //For guest customer create new cusotmer $customer->setWebsiteId($websiteId) ->setStore($store) ->setFirstname($data['customer']['firstname']) ->setLastname($data['customer']['lastname']) ->setPrefix($data['customer']['prefix']) ->setEmail($data['customer']['email']) ->setPassword($data['customer']['password']); $customer->save(); } } }
Now Run Command:
php bin/magento indexer:reindex php bin/magento cache:flush
Now check if you did it right with the following steps
Go to Admin panel
Login your admin panel with username and password
Click on Customers Tab -> All Customer
There, you have it!
We have covered everything related to creating customer programmatically in Magento 2. Let us know in the comments if we have missed out anything. Feel free to reach us out!