digitaldemocratic/docker/wordpress/plugins/mu-plugins/wemcor-patterns.php

74 lines
2.1 KiB
PHP

<?php
/*
Plugin Name: Wemcor Patterns
Plugin URI:
Description: Carga patterns por defecto para Gutenberg
Author: Wemcor
Author URI: https://wemcor.com
Text Domain: wemcor-patterns
*/
/*
* Instrucciones nombramiento de ficheros
*
* Guardar los templates en formato .json con formato minusculas y palabras separadas con guión medio
* El sistema se encarga de leer dicho directorio para mostrar todos los patterns. Si se desea dar de alta un nuevo pattern tan solo hay que guardar el .json en el directorio especificado
* El sistema se encarga de hacer un rename para mostrar nombre del template
* Se tienen que guardar en formato .json dentro de la carpeta mu-plugins/templates
*
*/
if( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
// Registro categoria de patrones
add_action( 'init', 'wemcor_register_block_pattern_category' );
function wemcor_register_block_pattern_category () {
if ( ! class_exists( 'WP_Block_Patterns_Registry') ) {
return;
}
register_block_pattern_category (
'wem-templates',
array(
'label' => 'Encabezados'
)
);
}
// Registro de patrones
add_action( 'init', 'wemcor_register_block_patterns' );
function wemcor_register_block_patterns() {
if ( ! class_exists( 'WP_Block_Patterns_Registry' ) ) {
return;
}
//leemos directorio de templates para cargar todos los patterns
require_once ABSPATH . 'wp-admin/includes/file.php';
$files = list_files( dirname(__FILE__) . '/templates/', 1);
foreach($files as $file) {
// /home/customer/www/test.wemcor.es/public_html/wp-content/mu-plugins/templates/template-fashion.json
$name = explode("/", $file);
wemcor_register_pattern( end($name) );
}
}
function wemcor_register_pattern( $file ) {
$url = WPMU_PLUGIN_URL . '/templates/' . $file;
$json = file_get_contents($url);
$json_data = json_decode($json, true);
//rename
$name = str_replace('-', ' ', $file);
$name = str_replace('.json', '', $name);
register_block_pattern(
'wem-gutenberg-blocks-patterns/'.$file,
array(
'title' => ucfirst($name),
'content' => $json_data['content'],
'categories' => [ 'wem-templates' ],
)
);
}