homegrade_blocks_production/index.php

194 lines
6.0 KiB
PHP

<?php
/**
* Plugin Name: Homegrade Blocks
* Description: Un série de Blocks sur mesure pour l'écriture du contenu Homegrade
* Author: Deligraph
* Text Domain: homegrade-blocks__texte-fonctionnel
*/
/* ---------------------------
BLOCK CATEGORY
---------------------------*/
function wpblock_add_block_categories($categories)
{
return array_merge(
[
[
'slug' => 'homegrade-blocks',
'title' => __('Blocs Homegrade ', 'block-course'),
'icon' => 'heart',
],
],
$categories
);
}
add_action('block_categories', 'wpblock_add_block_categories', 25, 2);
/* ---------------------------
REGISTER BLOCKS
---------------------------*/
function create_block_multiblocks_block_init()
{
// Dynamics
register_block_type(__DIR__ . '/blocks/questions-container/build');
register_block_type(__DIR__ . '/blocks/vocabulaire-summary/build');
register_block_type(__DIR__ . '/blocks/focused-schema/build');
register_block_type(__DIR__ . '/blocks/focused-thematique/build');
register_block_type(__DIR__ . '/blocks/content-page-header/build');
// register_block_type(__DIR__ . '/blocks/illustration-thematique/build');
// Statics
register_block_type(__DIR__ . '/blocks/points-cles/build');
register_block_type(__DIR__ . '/blocks/content-heading/build');
register_block_type(__DIR__ . '/blocks/picture-banner/build');
register_block_type(__DIR__ . '/blocks/highlight/build');
register_block_type(__DIR__ . '/blocks/aside/build');
register_block_type(__DIR__ . '/blocks/plus-loin/build');
register_block_type(__DIR__ . '/blocks/chapitrage-thematique/build');
register_block_type(__DIR__ . '/blocks/timeline/build');
register_block_type(__DIR__ . '/blocks/staff-list/build');
register_block_type(__DIR__ . '/blocks/section-titling/build');
// CONTAINERS (STATIC)
register_block_type(__DIR__ . '/blocks/grey-box/build');
register_block_type(__DIR__ . '/blocks/white-box/build');
// CHILDREN (STATIC)
register_block_type(__DIR__ . '/blocks/monoblock/build'); // — ALLOWED IN GREYBOX / WHITE BOX
// register_block_type(__DIR__ . '/blocks/_starterNested/build');
}
add_action('init', 'create_block_multiblocks_block_init');
/* ---------------------------
ENQUEUE EDITOR JS CONTEXT
---------------------------*/
function homegrade_blocks_enqueue_editor_assets()
{
$asset_file = include(plugin_dir_path(__FILE__) . 'build/index.asset.php');
wp_enqueue_script('homegrade-blocks-script', plugins_url('build/index.js', __FILE__), $asset_file['dependencies'], $asset_file['version']);
wp_enqueue_style('blocks-course-plugin-boilerplate-style', plugins_url('build/index.css', __FILE__));
}
add_action('enqueue_block_editor_assets', 'homegrade_blocks_enqueue_editor_assets');
/* -------------------------------------
ENQUEUE SCRIPTS AND STYLES FOR FRONT
-------------------------------------*/
function blocks_course_plugin_enqueue_assets()
{
$asset_file = include(plugin_dir_path(__FILE__) . 'build/index.asset.php');
wp_enqueue_script('homegrade-blocks-tooltipjs', plugin_dir_url(__FILE__) . 'build/tooltipFront.js');
wp_enqueue_style('homegrade-blocks-tooltipcss', plugin_dir_url(__FILE__) . 'src/format-types/tooltip/tooltip.css');
wp_enqueue_script('homegrade-blocks-brochurejs', plugin_dir_url(__FILE__) . 'src/format-types/brochure/brochure-front.js');
// #PASSING TRANSLATIONS
wp_register_script('homegrade-blocks-brochurejs', plugin_dir_url(__FILE__) . 'src/format-types/brochure/brochure-front.js');
$translation_array_brochure_link = array(
'download' => __('Télécharger', 'homegrade-theme__texte-fonctionnel'),
);
wp_localize_script('homegrade-blocks-brochurejs', 'textTranslationsBrochureLink', $translation_array_brochure_link);
wp_enqueue_script('homegrade-blocks-brochurejs');
wp_enqueue_style('homegrade-blocks-brochurecss', plugin_dir_url(__FILE__) . 'src/format-types/brochure/brochure.css');
wp_localize_script('homegrade-blocks-brochurejs', 'img_path_datas', array(
'downloadIconPath' => plugin_dir_url(__FILE__) . '/src/img/icon_brochure_download.svg'
));
}
add_action('wp_enqueue_scripts', 'blocks_course_plugin_enqueue_assets');
function add_type_attribute($tag, $handle, $src)
{
// if not your script, do nothing and return original $tag
if ('homegrade-blocks-tooltipjs' !== $handle) {
return $tag;
}
// change the script tag by adding type="module" and return it.
$tag = '<script type="module" src="' . esc_url($src) . '"></script>';
return $tag;
}
add_filter('script_loader_tag', 'add_type_attribute', 10, 3);
/* ---------------------------
ALLOWED BLOCKS
---------------------------*/
function homegrade_allowed_block_types($allowed_blocks, $editor_context)
{
if ('conseils' === $editor_context->post->post_type) {
$allowed_blocks = array(
'core/paragraph',
'core/list',
'core/list-item',
'homegrade-content-blocks/chapter-header',
'homegrade-content-blocks/points-cles',
'homegrade-content-blocks/questions-container'
);
}
add_filter('homegrade_allowed_block_types', 'misha_allowed_block_types', 25, 2);
if ('fiche-questions' === $editor_context->post->post_type) {
$allowed_blocks = array(
'core/paragraph',
'core/heading',
'core/list',
'core/list-item',
'homegrade-content-blocks/chapter-header',
'homegrade-content-blocks/points-cles',
'homegrade-content-blocks/questions-container'
);
}
return $allowed_blocks;
####ONLY DEREGISTER FEW BLOCKS
// get all the registered blocks
// $blocks = WP_Block_Type_Registry::get_instance()->get_all_registered();
// then disable some of them
// unset($blocks['core/paragraph']);
// unset($blocks['core/heading']);
// return the new list of allowed blocks
// return array_keys($blocks);
}
function wpdocs_allowed_block_types($block_editor_context, $editor_context)
{
if (!empty($editor_context->post)) {
return array(
'core/paragraph',
'core/heading',
'core/list',
);
}
return $block_editor_context;
}
// add_filter('allowed_block_types_all', 'wpdocs_allowed_block_types', 10, 2);
/* -------------------------------------
POST TYPE TEMPLATES
-------------------------------------*/
include_once('templates.php');