Creación de class-blockregister

namespace ManagerBlock;

defined('ABSPATH') || exit;

class BlocksRegister {

}

Dentro de la clase BlocksRegister

public static function init() {
        add_action('acf/init', [__CLASS__, 'register_blocks']);
    }

Inicialización y Conexión con ACF

init(): El punto de partida de este módulo.

add_action('acf/init', ...): Conecta el método register_blocks al hook de acción acf/init. Este hook es crucial porque garantiza que el código de registro de bloques se ejecute solo después de que el plugin Advanced Custom Fields (ACF) se haya cargado completamente. Esto es un requisito para que la función register_block_type funcione correctamente cuando se usa con bloques basados en ACF.

public static function register_blocks() {
        // Bloques disponibles
        $available_blocks = [
            'box-images',
            'title-subtitle',
            'slider-premium',
            'section-boxed',
            'list-block',
            'banner-text',
            'box-color',
            'banner-premium',
            'fixed-block',
            'grid-main',
            'images-effect',
        ];

        // Obtener los bloques habilitados desde la base de datos
        $enabled_blocks = get_option('manager_block_enabled_blocks', []);
        if (!is_array($enabled_blocks)) {
            $enabled_blocks = [];
        }

        // Registrar solo los bloques habilitados
        foreach ($available_blocks as $block) {
            if (in_array($block, $enabled_blocks)) {
                register_block_type(MB_PLUGIN_PATH . 'blocks/' . $block);
            }
        }
    }

Método Principal de Registro (register_blocks)

Este método contiene la lógica para decidir qué bloques se activan.

Definición de Bloques Disponibles

  • $available_blocks: Es una lista maestra, codificada directamente en PHP, de todos los slugs (nombres únicos) de los bloques que tu plugin ofrece.

Obtener las Preferencias del Usuario

  • get_option('manager_block_enabled_blocks', []): Recupera los datos guardados en la base de datos de WordPress. Esta opción contiene el array de slugs que el usuario seleccionó como “Bloques disponibles” en la página de administración (la que genera la clase AdminPanel). Si no hay nada guardado, por defecto usa un array vacío ([]).

Registro Condicional

  • Iteración y Condición: El código itera sobre la lista completa de $available_blocks. Por cada bloque, comprueba si su slug ($block) está presente en el array de $enabled_blocks (los seleccionados por el usuario).

Activación:

  • Si el bloque está habilitado, llama a la función register_block_type().
  • Esta función toma la ruta completa al directorio del bloque (ej: .../manager-blocks/blocks/box-images). Dentro de ese directorio debe estar el archivo block.json (o un archivo PHP con la configuración) que define cómo funciona y cómo se renderiza el bloque.