Atributos para bloques

Descripción

This plugin adds additional advanced inspector controls to Gutenberg blocks that allow to add any custom HTML attributes to the block’s front-end output. This allows you to add inline styles to fine-tune the block’s appearance, set aria attributes to improve your site’s accessibility, add data attributes to integrate with any JavaScript modules or even JavaScript DOM event attributes such as onclick, onchange or onload.

Demo

Capturas

  • Agregando atributo de estilo al bloque de párrafo

Instalación

Instalar a través del panel de administración

  1. Ve a tu panel de administración de WordPress -> Plugins.
  2. Haz clic en «Añadir nuevo»
  3. Haz clic en «Subir plugin».
  4. Seleccione el archivo attributes-for-blocks.zip.
  5. Haz clic en «Instalar ahora».
  6. Active el plugin desde panel de administración de -> Plugins de WordPress.

Instalación manual vía carga FTP

  1. Sube la carpeta «attributes-for-blocks» desde el archivo attributes-for-blocks.zip a la carpeta ../wp-content/plugins de tus instalaciones de WordPress.
  2. Active el plugin desde panel de administración de -> Plugins de WordPress.

FAQ

¿Cómo agrego un atributo?

In your selected block’s inspector controls (Block settings) scroll all the way to the bottom and click on «Advanced». It should contain a section called «Additional attributes».
Type an attribute name into the «Add attribute» field and press «Add» to add an attribute for the block. A new input with the attribute’s name should appear below, into which you can optionally insert the attribute value.
Example attributes: style, title, target, class, id, onclick, data-*, aria-*.

Why is the input disabled?

When the current user doesn’t have unfiltered_html capabilities attributes cannot be added and all existing attributes are stripped when the post is updated.

¿Cómo funciona?

Para los bloques regulares, los atributos se agregan al elemento raíz del contenido guardado del bloque, lo que significa que se representarán solo en la interfaz y no en el editor. Para los bloques dinámicos, los atributos se agregan a través de la función render_callback y también se pueden aplicar en el editor, dependiendo de si el bloque se renderiza del lado del servidor o del cliente.

¿Funciona para todos los bloques?

Debería funcionar con bloques normales que renderizan un elemento WP válido que pueda utilizar el filtro blocks.getSaveContent.extraProps, así como bloques dinámicos que utilicen un render_callback. Es posible que los bloques de terceros que hacen algo poco ortodoxo no funcionen.
Bloques no admitidos conocidos

Usage with Alpine.js

@ prefix in an attribute name is used for «override» mode in this plugin, for Alpine.js attributes use x-on:click instead of @click or use the shorthand syntax with two @ characters instead of one: @@click.

Disable block support

El filtro afb_unsupported_blocks se puede usar en el archivo functions.php de su tema hijo (Child theme) para deshabilitar el soporte de bloques para agregar atributos adicionales.

add_filter('afb_unsupported_blocks', function($blocks) {
    $blocks[] = 'core/button';
    return $blocks;
});

¿Qué pasa cuando desactivo el plugin?

Blocks with custom attributes may become invalid, depending on which attributes you’ve added. From there you can recover the block without the custom attributes by clicking «Attempt Block Recovery» or keep the block with custom attributes as HTML by choosing «Convert to HTML». If you don’t want to risk blocks becoming invalid you need to remove all custom attributes before disabling the plugin.

How do I add unfiltered_html capability to user roles?

You can modify which roles have the unfiltered_html capability using custom code in your theme’s functions.php file or via a custom plugin. Only grant this capability if you trust the current and future users of that role to not do anything malicious.

add_action('init', function() {
    if($role = get_role('contributor')) {
        $role->add_cap('unfiltered_html');
    }
});

Reseñas

6 de noviembre de 2024
This is perfect, it saved me tons of work. I am used it for adding the view-transition-classes to query block elements.websevendev & jimedwards million thanks to you!
14 de febrero de 2024
Thank you very much for providing this plugin, I have been able to use SAL scroll animation library with it works perfectly! Hope you keep going with this Plugin for future Wordpress versions. Thank YOU!
4 de enero de 2024
I absolutely love this plugin! Does what it says easily and reliably, doesn’t add any bloat. Amazing.
21 de noviembre de 2023
This adds considerable versatility to the WordPress blocks editor — I wanted to use Bootstrap in my current custom theme, but didn’t want to integrate Bootstrap fully, only using it within blocks when needed. Things like the dark mode (data-bs-theme=»dark») can be added in, you can use onClick to utilize JavaScript (I used that to click open Bootstrap cards, etc), and really much more. Saved me a lot of time having to do things in a much more manual way. Highly recommend this plugin, works great.
Leer todas las 19 reseñas

Colaboradores y desarrolladores

«Atributos para bloques» es un software de código abierto. Las siguientes personas han colaborado con este plugin.

Colaboradores

«Atributos para bloques» está traducido en 3 idiomas. Gracias a los traductores por sus contribuciones.

Traduce «Atributos para bloques» a tu idioma.

¿Interesado en el desarrollo?

Revisa el código , echa un vistazo al repositorio SVN o suscríbete al registro de desarrollo por RSS.

Registro de cambios

1.0.9

  • Try fix issue with current_user_can check in pre_kses when SECURE_AUTH_COOKIE isn’t defined.

1.0.8

  • Try fix issue with current_user_can check in pre_kses when WP pluggable functions aren’t loaded.

1.0.7

  • Security update: users without unfiltered_html capability can no longer add attributes. When a user without the capability updates a post all existing attributes are stripped. Issue discovered by Francesco Carlucci (CVE ID: CVE-2024-8318, CVSS Severity Score: 6.4 (Medium)). The vulnerability made it possible for authenticated attackers, with Contributor-level access and above, to inject arbitrary web scripts in pages that will execute whenever a user accessed an injected page.
  • Tested up to WordPress 6.6.
  • Update @wordpress/* packages.

1.0.6

  • Tested up to WordPress 6.5.
  • Fix PHP notice when rendering a block that doesn’t have any attributes.
  • Update @wordpress/* packages.

1.0.5

  • Use WP_HTML_Tag_Processor for adding HTML attributes.
  • Remove afb_sanitize_attribute_key and afb_sanitize_attribute_value filters (now handled by WP_HTML_Tag_Processor).
  • Use render_block filter to apply attributes instead of overriding block’s render_callback.
  • Move all PHP code to main file for simplicity.
  • Add $attribute param to afb_attribute_separator filter.
  • Remove uppercase text transform from attribute input labels, use monospace font for value.
  • Add button to edit attributes in a modal for more space.
  • Update @wordpress/* packages.
  • Regression: for blocks that render multiple root elements attributes are only applied to the first one.

1.0.4

  • Add afb_sanitize_attribute_key and afb_sanitize_attribute_value filters.
  • Catch errors when using invalid characters in attribute name/value.
  • Update @wordpress/* packages.

1.0.3

  • Update @wordpress/* packages.
  • Test with WordPress 6.0.
  • Convert advanced style attribute editor to TypeScript and refactor.
  • Fix duplicate attribute values being output when the block has both JS and PHP render functions.
  • Add GitHub link.
  • Remove src folder from plugin.

1.0.2

  • Agregue un editor avanzado para el atributo de estilo.
  • Eliminar jQuery

1.0.1

  • Corrige la codificación de caracteres especiales para bloques dinámicos.