Magento 2 how create CMS page programmatically
Create CMS Page By Installer In Magento 2 – Before you start you must have knowledge of Magento 2 custom module creation, So create your custom module first.
Here I’m going to explain you how you can create CMS page by installer in magento 2. First of all create a “InstallData.php” file on location Vendor\Module\Setup then use below code.
<?php
namespace Kodefolks\Cmsinstaller\Setup;
use Magento\Cms\Model\PageFactory;
use Magento\Framework\Setup\InstallDataInterface;
use Magento\Framework\Setup\ModuleContextInterface;
use Magento\Framework\Setup\ModuleDataSetupInterface;
class InstallData implements InstallDataInterface
{
private $pageFactory;
private $blockFactory;
public function __construct(PageFactory $pageFactory)
{
$this->pageFactory = $pageFactory;
}
public function install(ModuleDataSetupInterface $setup, ModuleContextInterface $context)
{
$cmsPageData = [
'title' => 'Custom cms page', // cms page title
'page_layout' => '1column', // cms page layout
'meta_keywords' => 'Page keywords', // cms page meta keywords
'meta_description' => 'Page description', // cms page description
'identifier' => 'custom-page', // cms page url identifier
'content_heading' => 'Custom cms page', // Page heading
'content' => "<h1>Write your custom cms page content.......</h1>", // page content
'is_active' => 1, // define active status
'stores' => [0], // assign to stores
'sort_order' => 0 // page sort order
];
// create page
$this->pageFactory->create()->setData($cmsPageData)->save();
}
}
In this way we can create CMS page programmatically by installer file.
Thanks :)
Try this
<?php
...
private $pageFactory;
public function __construct(
\Magento\Cms\Model\PageFactory $pageFactory
)
{
$this->pageFactory = $pageFactory;
}
...
...
$testPage = [
'title' => 'Test page title',
'identifier' => 'test-page',
'stores' => [0],
'is_active' => 1,
'content_heading' => 'Test page heading',
'content' => 'Test page content',
'page_layout' => '1column'
];
$this->pageFactory->create()->setData($testPage)->save();
Reference