JezK
Edit File: NewsletterBlock.php
<?php // phpcs:ignore SlevomatCodingStandard.TypeHints.DeclareStrictTypes.DeclareStrictTypesMissing namespace MailPoet\PostEditorBlocks; if (!defined('ABSPATH')) exit; use MailPoet\API\REST\API as RestApi; use MailPoet\Newsletter\Embed\NewsletterEmbedService; use MailPoet\Newsletter\Embed\RestApi\Endpoints\NewsletterEmbedSelectorEndpoint; use MailPoet\WP\Functions as WPFunctions; class NewsletterBlock { /** @var WPFunctions */ private $wp; /** @var NewsletterEmbedService */ private $newsletterEmbedService; /** @var RestApi */ private $api; public function __construct( WPFunctions $wp, NewsletterEmbedService $newsletterEmbedService, RestApi $api ) { $this->wp = $wp; $this->newsletterEmbedService = $newsletterEmbedService; $this->api = $api; } public function init() { if ($this->wp->isAdmin() || (defined('REST_REQUEST') && REST_REQUEST)) { $this->wp->registerBlockType('mailpoet/newsletter-render', [ 'attributes' => $this->getAttributes(), 'render_callback' => [$this, 'renderNewsletter'], ]); } $this->wp->addAction(RestApi::REST_API_INIT_ACTION, function(): void { $this->api->registerGetRoute('newsletter-embeds', NewsletterEmbedSelectorEndpoint::class); }); } public function initAdmin() { $this->wp->registerBlockType('mailpoet/newsletter', [ 'style' => 'mailpoetblock-form-block-css', 'editor_script' => 'mailpoet/subscription-form-block', 'attributes' => $this->getAttributes(), 'supports' => [ 'align' => ['wide', 'full'], ], ]); } public function initFrontend() { $this->wp->registerBlockType('mailpoet/newsletter', [ 'attributes' => $this->getAttributes(), 'supports' => [ 'align' => ['wide', 'full'], ], 'render_callback' => [$this, 'renderNewsletter'], ]); } public function renderNewsletter(array $blockSettings = []): string { return $this->newsletterEmbedService->render($blockSettings); } private function getAttributes(): array { return [ 'newsletterId' => [ 'type' => 'number', 'default' => null, ], 'height' => [ 'type' => 'number', 'default' => NewsletterEmbedService::DEFAULT_HEIGHT, ], 'width' => [ 'type' => 'number', 'default' => NewsletterEmbedService::DEFAULT_WIDTH, ], 'showFallbackLink' => [ 'type' => 'boolean', 'default' => true, ], 'fallbackLinkAlignment' => [ 'type' => 'string', 'default' => 'center', ], 'iframeAlignment' => [ 'type' => 'string', 'default' => 'center', ], 'showEmailBackground' => [ 'type' => 'boolean', 'default' => true, ], 'align' => [ 'type' => 'string', ], ]; } }