92 lines
1.9 KiB
PHP
92 lines
1.9 KiB
PHP
<?php
|
|
defined('ABSPATH') || exit;
|
|
class TrustindexGutenbergPlugin
|
|
{
|
|
|
|
public static $instance = null;
|
|
|
|
function init()
|
|
{
|
|
add_action('enqueue_block_editor_assets', [ $this, 'gutenberg_enqueue_block_editor_assets' ]);
|
|
add_action('init', [ $this, 'register_block' ]);
|
|
}
|
|
|
|
function gutenberg_enqueue_block_editor_assets()
|
|
{
|
|
wp_enqueue_script(
|
|
'gutenberg-ti',
|
|
plugins_url('block-editor.js', __FILE__),
|
|
[
|
|
'wp-api-fetch',
|
|
'wp-components',
|
|
'wp-compose',
|
|
'wp-blocks',
|
|
'wp-element',
|
|
'wp-i18n'
|
|
],
|
|
filemtime(plugin_dir_path(__FILE__) . 'block-editor.js'),
|
|
['in_footer' => false]
|
|
);
|
|
}
|
|
function register_block()
|
|
{
|
|
register_block_type('trustindex/block-selector', [
|
|
'render_callback' => [ $this, 'render_block' ],
|
|
'attributes' => [
|
|
'widget_id' => [ 'type' => 'string' ],
|
|
'trustindex_widgets' => [ 'type' => 'object' ],
|
|
'free_widgets' => [ 'type' => 'object' ],
|
|
'custom_id' => [ 'type' => 'boolean' ],
|
|
'setup_url' => [ 'type' => 'string' ]
|
|
]
|
|
]);
|
|
}
|
|
|
|
function render_block($attributes)
|
|
{
|
|
if ($this->is_gutenberg_page()) {
|
|
return "";
|
|
}
|
|
if (isset($attributes['free_widgets'][ $attributes['widget_id'] ])) {
|
|
$shortCode = 'no-registration=' . $attributes['widget_id'];
|
|
}
|
|
else {
|
|
$shortCode = 'data-widget-id="'. $attributes['widget_id'] .'"';
|
|
}
|
|
return '[trustindex '. $shortCode .']';
|
|
}
|
|
function is_gutenberg_page()
|
|
{
|
|
if (function_exists('is_gutenberg_page') && is_gutenberg_page()) {
|
|
return true;
|
|
}
|
|
if (function_exists('get_current_screen')) {
|
|
$currentScreen = get_current_screen();
|
|
if ($currentScreen && method_exists($currentScreen, 'is_block_editor') && $currentScreen->is_block_editor()) {
|
|
return true;
|
|
}
|
|
}
|
|
return false;
|
|
}
|
|
|
|
public static function instance()
|
|
{
|
|
if (is_null(self::$instance)) {
|
|
self::$instance = new self();
|
|
self::$instance->init();
|
|
}
|
|
return self::$instance;
|
|
}
|
|
|
|
public function __clone()
|
|
{
|
|
_doing_it_wrong(__FUNCTION__, 'Cheating huh?', '1.0.0');
|
|
}
|
|
|
|
public function __wakeup()
|
|
{
|
|
_doing_it_wrong(__FUNCTION__, 'Cheating huh?', '1.0.0');
|
|
}
|
|
}
|
|
?>
|