178 lines
3.8 KiB
PHP
178 lines
3.8 KiB
PHP
|
<?php
|
||
|
/**
|
||
|
* Class for Menu Icons logic.
|
||
|
*
|
||
|
* @package gutenberg-menu-icons
|
||
|
*/
|
||
|
|
||
|
namespace ThemeIsle;
|
||
|
|
||
|
use WP_Block_Type_Registry;
|
||
|
|
||
|
/**
|
||
|
* Class GutenbergMenuIcons
|
||
|
*/
|
||
|
class GutenbergMenuIcons {
|
||
|
|
||
|
/**
|
||
|
* The main instance var.
|
||
|
*
|
||
|
* @var GutenbergMenuIcons
|
||
|
*/
|
||
|
public static $instance = null;
|
||
|
|
||
|
/**
|
||
|
* Holds the module slug.
|
||
|
*
|
||
|
* @since 1.0.0
|
||
|
* @access protected
|
||
|
* @var string $slug The module slug.
|
||
|
*/
|
||
|
protected $slug = 'gutenberg-menu-icons';
|
||
|
|
||
|
/**
|
||
|
* Initialize the class
|
||
|
*/
|
||
|
public function init() {
|
||
|
add_action( 'enqueue_block_editor_assets', array( $this, 'enqueue_editor_assets' ) );
|
||
|
add_action( 'enqueue_block_assets', array( $this, 'enqueue_block_frontend_assets' ) );
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Load Gutenberg editor assets.
|
||
|
*
|
||
|
* @since 1.0.0
|
||
|
* @access public
|
||
|
*/
|
||
|
public function enqueue_editor_assets() {
|
||
|
$block_registered = WP_Block_Type_Registry::get_instance()->is_registered( 'core/navigation' );
|
||
|
|
||
|
if ( ! $block_registered ) {
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
if ( THEMEISLE_GUTENBERG_MENU_ICONS_DEV ) {
|
||
|
$version = time();
|
||
|
} else {
|
||
|
$version = THEMEISLE_GUTENBERG_MENU_ICONS_VERSION;
|
||
|
}
|
||
|
|
||
|
wp_enqueue_script(
|
||
|
'themeisle-gutenberg-menu-icons',
|
||
|
plugin_dir_url( $this->get_dir() ) . $this->slug . '/build/editor.js',
|
||
|
array( 'wp-i18n', 'wp-blocks', 'wp-components', 'wp-compose', 'wp-editor', 'wp-element', 'wp-hooks' ),
|
||
|
$version,
|
||
|
true
|
||
|
);
|
||
|
|
||
|
wp_enqueue_style(
|
||
|
'themeisle-gutenberg-menu-icons',
|
||
|
plugin_dir_url( $this->get_dir() ) . $this->slug . '/build/editor.css',
|
||
|
array( 'font-awesome-5' ),
|
||
|
$version
|
||
|
);
|
||
|
|
||
|
wp_enqueue_style(
|
||
|
'themeisle-gutenberg-menu-icons-font-awesome',
|
||
|
plugins_url( '/', __FILE__ ) . 'assets/css/font-awesome.min.css',
|
||
|
array( 'font-awesome-5' ),
|
||
|
$version
|
||
|
);
|
||
|
|
||
|
wp_set_script_translations( 'themeisle-gutenberg-menu-icons', 'textdomain' );
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Load Gutenberg assets.
|
||
|
*
|
||
|
* @since 1.0.0
|
||
|
* @access public
|
||
|
*/
|
||
|
public function enqueue_block_frontend_assets() {
|
||
|
if ( ! has_block( 'core/navigation' ) ) {
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
if ( THEMEISLE_GUTENBERG_MENU_ICONS_DEV ) {
|
||
|
$version = time();
|
||
|
} else {
|
||
|
$version = THEMEISLE_GUTENBERG_MENU_ICONS_VERSION;
|
||
|
}
|
||
|
|
||
|
if ( is_admin() ) {
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
wp_enqueue_script(
|
||
|
'themeisle-gutenberg-menu-icons-frontend',
|
||
|
plugin_dir_url( $this->get_dir() ) . $this->slug . '/build/frontend.js',
|
||
|
array(),
|
||
|
$version,
|
||
|
true
|
||
|
);
|
||
|
|
||
|
wp_enqueue_style(
|
||
|
'themeisle-gutenberg-menu-icons-frontend',
|
||
|
plugin_dir_url( $this->get_dir() ) . $this->slug . '/build/frontend.css',
|
||
|
array( 'font-awesome-5' ),
|
||
|
$version
|
||
|
);
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Method to return path to child class in a Reflective Way.
|
||
|
*
|
||
|
* @since 1.0.0
|
||
|
* @access protected
|
||
|
* @return string
|
||
|
*/
|
||
|
protected function get_dir() {
|
||
|
return dirname( __FILE__ );
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* The instance method for the static class.
|
||
|
* Defines and returns the instance of the static class.
|
||
|
*
|
||
|
* @static
|
||
|
* @since 1.0.0
|
||
|
* @access public
|
||
|
* @return GutenbergMenuIcons
|
||
|
*/
|
||
|
public static function instance() {
|
||
|
if ( is_null( self::$instance ) ) {
|
||
|
self::$instance = new self();
|
||
|
self::$instance->init();
|
||
|
}
|
||
|
|
||
|
return self::$instance;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Throw error on object clone
|
||
|
*
|
||
|
* The whole idea of the singleton design pattern is that there is a single
|
||
|
* object therefore, we don't want the object to be cloned.
|
||
|
*
|
||
|
* @access public
|
||
|
* @since 1.0.0
|
||
|
* @return void
|
||
|
*/
|
||
|
public function __clone() {
|
||
|
// Cloning instances of the class is forbidden.
|
||
|
_doing_it_wrong( __FUNCTION__, esc_html__( 'Cheatin’ huh?', 'textdomain' ), '1.0.0' );
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Disable unserializing of the class
|
||
|
*
|
||
|
* @access public
|
||
|
* @since 1.0.0
|
||
|
* @return void
|
||
|
*/
|
||
|
public function __wakeup() {
|
||
|
// Unserializing instances of the class is forbidden.
|
||
|
_doing_it_wrong( __FUNCTION__, esc_html__( 'Cheatin’ huh?', 'textdomain' ), '1.0.0' );
|
||
|
}
|
||
|
}
|