Skip to content
Snippets Groups Projects
class-external-permalinks-redux-block-editor.php 1.6 KiB
Newer Older
<?php
/**
 * Block editor support.
 *
 * @package External_Permalinks_Redux
 */

/**
 * Class Block_Editor.
 */
Erick Hitter's avatar
Erick Hitter committed
class External_Permalinks_Redux_Block_Editor {
	/**
	 * Singleton!
	 *
	 * @var self
	 */
	protected static $instance;

	/**
	 * Instantiate class as a singleton.
	 *
	 * @return object
	 */
	public static function get_instance() {
		if ( empty( self::$instance ) ) {
			self::$instance = new self();
			self::$instance->_setup();
		}

		return self::$instance;
	}

	/**
	 * Unused constructor.
	 */
	final private function __construct() {}

	/**
	 * Set up class.
	 *
	 * @return void
	 */
	protected function _setup() {
Erick Hitter's avatar
Erick Hitter committed
		add_action( 'enqueue_block_editor_assets', array( $this, 'enqueue' ) );
	}

	/**
	 * Enqueue block-editor script.
	 *
	 * @return void
	 */
	public function enqueue() {
		global $pagenow;

		if ( 'widgets.php' === $pagenow ) {
			return;
		}

		$asset_data   = require_once dirname( dirname( __FILE__ ) ) . '/assets/build/index.asset.php';
		$asset_handle = 'external-permalinks-redux';

		wp_enqueue_script(
			$asset_handle,
			plugins_url( 'assets/build/index.js', dirname( __FILE__ ) ),
			$asset_data['dependencies'],
			$asset_data['version'],
			true
		);

		wp_localize_script(
			$asset_handle,
			'externalPermalinksReduxConfig',
			array(
				'metaKeys'    => array(
					'target' => external_permalinks_redux::get_instance()->meta_key_target,
					'type'   => external_permalinks_redux::get_instance()->meta_key_type,
				),
				'postTypes'   => external_permalinks_redux::get_instance()->post_types,
				'statusCodes' => external_permalinks_redux::get_instance()->status_codes,
			)
		);