|
1 | 1 | === LW HTML Code Injector === |
2 | 2 | Contributors: luchoweb |
3 | | -Donate link: https://luchoweb.dev |
4 | | -Tags: head, body, inject, scripts, custom code, tracking, html, snippets |
| 3 | +Author: Lucho Web (https://luchoweb.dev) |
| 4 | +Tags: head, body, code injector, custom code, html, scripts |
5 | 5 | Requires at least: 5.0 |
6 | 6 | Tested up to: 6.7 |
7 | 7 | Requires PHP: 7.4 |
8 | | -Stable tag: 1.0.0 |
| 8 | +Stable tag: 1.0.1 |
9 | 9 | License: GPLv2 or later |
10 | 10 | License URI: https://www.gnu.org/licenses/gpl-2.0.html |
11 | 11 |
|
12 | | -Plugin que permite inyectar código HTML/JS/CSS en wp_head y justo después del <body> tag (wp_body_open) por cada post, página o CPT. Autor: Lucho Web (luchoweb.dev) |
| 12 | +Agrega código HTML personalizado en el <head> y justo después del <body> mediante cajas meta en posts, páginas y Custom Post Types. Incluye medidas de seguridad y opciones de control para administradores. |
13 | 13 |
|
14 | 14 | == Description == |
15 | 15 |
|
16 | | -**LW HTML Code Injector** añade una meta box en entradas, páginas y cualquier *custom post type* público para permitir insertar código personalizado en dos lugares: |
| 16 | +**LW HTML Code Injector** permite insertar código HTML en dos ubicaciones clave del tema: |
| 17 | +- Dentro del `wp_head` |
| 18 | +- Inmediatamente después de `<body>` vía `wp_body_open` |
17 | 19 |
|
18 | | -1. **wp_head** — ideal para scripts, estilos, etiquetas meta o herramientas de tracking puntuales. |
19 | | -2. **wp_body_open** — perfecto para píxeles de seguimiento, banners o HTML que debe ir apenas se abre `<body>`. |
| 20 | +Estas inserciones funcionan en: |
| 21 | +- Entradas (posts) |
| 22 | +- Páginas |
| 23 | +- Custom Post Types públicos |
20 | 24 |
|
21 | | -Los campos son **opcionales y por post**, útiles para snippets específicos sin afectar todo el sitio. |
| 25 | +El plugin añade dos textarea en una meta box llamada **“Head & Body Injector”**, visibles únicamente para administradores o usuarios con la capacidad `unfiltered_html`. |
22 | 26 |
|
23 | | -Incluye además un fallback con JavaScript por si el tema no ejecuta `wp_body_open`. |
| 27 | +### Características principales |
24 | 28 |
|
25 | | -Pensado para desarrolladores, marketers o implementadores que necesitan insertar fragmentos de manera precisa y controlada sin usar plugins gigantescos. |
| 29 | +- Inserción de HTML personalizada por cada post/page/CPT. |
| 30 | +- Sanitización automática para usuarios sin `unfiltered_html`. |
| 31 | +- Eliminación de atributos peligrosos como `onclick`, `onload`, etc. |
| 32 | +- Lista segura de etiquetas permitidas mediante `wp_kses`. |
| 33 | +- Fallback opcional para temas sin `wp_body_open` (desactivado por defecto). |
| 34 | +- Registro de autor y fecha de modificación del código. |
| 35 | +- Compatible con shortcodes. |
| 36 | +- Compatible con cualquier tema moderno. |
26 | 37 |
|
27 | | -== Features == |
| 38 | +### Seguridad |
28 | 39 |
|
29 | | -- Dos textareas por entrada/página/CPT: |
30 | | - - Código para `wp_head` |
31 | | - - Código para `wp_body_open` |
32 | | -- Soporte para: |
33 | | - - HTML |
34 | | - - CSS |
35 | | - - JavaScript |
36 | | - - Shortcodes |
37 | | -- Fallback opcional cuando el tema no usa `wp_body_open` |
38 | | -- Solo usuarios con `unfiltered_html` pueden guardar código sin filtrar |
39 | | -- Meta boxes limpias y fáciles de usar |
40 | | -- Compatible con cualquier tema |
41 | | -- No afecta nada cuando no se agregan snippets |
| 40 | +Este plugin incluye capas de protección: |
| 41 | +- La meta box solo aparece para administradores o usuarios con permisos elevados. |
| 42 | +- El contenido se **saneá al guardar** para roles sin `unfiltered_html`. |
| 43 | +- Se evita la ejecución de scripts no autorizados y atributos con eventos. |
| 44 | +- El fallback que usa `innerHTML` en el `<body>` está **desactivado por defecto**. |
| 45 | +- Se recomienda activar 2FA para administradores y configurar una política CSP en el servidor. |
| 46 | + |
| 47 | +Aun así, ten en cuenta: |
| 48 | +- Los administradores pueden insertar código no filtrado (intencional). |
| 49 | +- No instales este plugin en sitios donde usuarios no confiables puedan editar contenido. |
| 50 | + |
| 51 | +### Casos de uso |
| 52 | + |
| 53 | +- Códigos de tracking por página. |
| 54 | +- Scripts específicos para campañas. |
| 55 | +- Snippets de HTML único por entrada. |
| 56 | +- Integraciones personalizadas sin modificar archivos de tema. |
42 | 57 |
|
43 | 58 | == Installation == |
44 | 59 |
|
45 | | -1. Descarga el archivo ZIP del plugin. |
46 | | -2. Sube el contenido a `/wp-content/plugins/lw-html-code-injector/` |
47 | | - o instálalo desde el panel de WordPress → Plugins → Añadir nuevo → Subir plugin. |
48 | | -3. Activa el plugin. |
49 | | -4. Edita cualquier post, página o CPT público. |
50 | | -5. Busca la meta box **Head & Body Injector** y escribe tu código. |
| 60 | +1. Sube la carpeta del plugin a `/wp-content/plugins/lw-html-code-injector/` |
| 61 | + o instala el ZIP desde **Plugins → Añadir nuevo → Subir plugin**. |
| 62 | + |
| 63 | +2. Activa el plugin. |
| 64 | + |
| 65 | +3. Edita una entrada/página/CPT y verás la meta box **Head & Body Injector**. |
| 66 | + |
| 67 | +4. Agrega tu código HTML donde necesites. |
| 68 | + - Se insertará en `wp_head()` o `wp_body_open()` dependiendo del campo. |
| 69 | + - Si tu tema no usa `wp_body_open()`, puedes activar el fallback (requiere editar `wp-config.php` o añadir un filtro). |
51 | 70 |
|
52 | 71 | == Frequently Asked Questions == |
53 | 72 |
|
54 | | -= ¿Afecta al rendimiento del sitio? = |
55 | | -No, solo imprime el código cuando la entrada o página tiene contenido en los campos. El plugin no carga assets propios. |
| 73 | += ¿Puedo insertar scripts completos? = |
| 74 | +Solo si tu usuario tiene la capacidad `unfiltered_html`. De lo contrario, el plugin limpia el contenido para mantener el sitio seguro. |
56 | 75 |
|
57 | | -= ¿Puedo insertar scripts de terceros como Google Tag Manager, Meta Pixel, etc.? = |
58 | | -Sí, siempre que tu rol tenga permiso `unfiltered_html`. |
| 76 | += ¿Es seguro usarlo en sitios con muchos editores? = |
| 77 | +Recomendado únicamente para sitios donde solo administradores tengan acceso a estas cajas meta. |
59 | 78 |
|
60 | | -= ¿Qué pasa si mi tema no implementa wp_body_open? = |
61 | | -El plugin incluye un fallback que inserta el contenido mediante JavaScript justo después del `<body>`. |
| 79 | += ¿Puedo usar shortcodes en los campos? = |
| 80 | +Sí. WordPress procesará los shortcodes antes de imprimir el contenido. |
62 | 81 |
|
63 | | -= ¿Funciona en Custom Post Types? = |
64 | | -Sí, incluye todos los CPT públicos automáticamente. |
| 82 | += ¿Qué pasa si mi tema no tiene wp_body_open()? = |
| 83 | +El código para `<body>` no se imprimirá, a menos que habilites el fallback manualmente. |
65 | 84 |
|
66 | 85 | == Changelog == |
67 | 86 |
|
68 | | -= 1.0.0 = |
69 | | -* Primera versión estable. |
70 | | -* Inserción de código en wp_head y wp_body_open. |
71 | | -* Meta boxes para todos los post types públicos. |
72 | | -* Fallback para temas sin wp_body_open. |
73 | | -* Sanitización según permisos del usuario. |
74 | | -* Shortcodes permitidos. |
75 | | - |
76 | | -== Upgrade Notice == |
| 87 | += 1.0.1 = |
| 88 | +- Añadida sanitización avanzada con eliminación de event handlers. |
| 89 | +- Meta box limitada a administradores/unfiltered_html. |
| 90 | +- Fallback para body desactivado por defecto por motivos de seguridad. |
| 91 | +- Registro de autor y fecha. |
| 92 | +- Mejoras de estabilidad. |
77 | 93 |
|
78 | 94 | = 1.0.0 = |
79 | | -Versión inicial del plugin. No hay cambios previos. |
| 95 | +- Versión inicial. |
80 | 96 |
|
81 | 97 | == License == |
82 | 98 |
|
83 | | -Este plugin es software libre licenciado bajo **GPLv2 o posterior**. |
| 99 | +Este plugin está bajo GPLv2 o posterior. Eres libre de modificarlo y redistribuirlo bajo la misma licencia. |
| 100 | + |
0 commit comments