Skip to content

Commit acf95cb

Browse files
committed
version 1.0.1
1 parent 3a618e2 commit acf95cb

File tree

2 files changed

+71
-54
lines changed

2 files changed

+71
-54
lines changed

lw-html-code-injector.php

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -30,11 +30,11 @@
3030

3131
class LW_HTML_Code_Injector {
3232

33-
const META_KEY_HEAD = '_lLWHCI_head_code';
34-
const META_KEY_BODY = '_lLWHCI_body_code';
35-
const META_KEY_LOG = '_lLWHCI_meta_log';
36-
const NONCE_KEY = '_lLWHCI_nonce';
37-
const META_BOX_ID = 'LWHCI_meta_box';
33+
const META_KEY_HEAD = '_lwhci_head_code';
34+
const META_KEY_BODY = '_lwhci_body_code';
35+
const META_KEY_LOG = '_lwhci_meta_log';
36+
const NONCE_KEY = '_lwhci_nonce';
37+
const META_BOX_ID = 'lwhci_meta_box';
3838

3939
public function __construct() {
4040
add_action( 'add_meta_boxes', array( $this, 'add_meta_boxes' ) );

readme.txt

Lines changed: 66 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -1,83 +1,100 @@
11
=== LW HTML Code Injector ===
22
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
55
Requires at least: 5.0
66
Tested up to: 6.7
77
Requires PHP: 7.4
8-
Stable tag: 1.0.0
8+
Stable tag: 1.0.1
99
License: GPLv2 or later
1010
License URI: https://www.gnu.org/licenses/gpl-2.0.html
1111

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.
1313

1414
== Description ==
1515

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`
1719

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
2024

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`.
2226

23-
Incluye además un fallback con JavaScript por si el tema no ejecuta `wp_body_open`.
27+
### Características principales
2428

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.
2637

27-
== Features ==
38+
### Seguridad
2839

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.
4257

4358
== Installation ==
4459

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).
5170

5271
== Frequently Asked Questions ==
5372

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.
5675

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.
5978

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.
6281

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.
6584

6685
== Changelog ==
6786

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.
7793

7894
= 1.0.0 =
79-
Versión inicial del plugin. No hay cambios previos.
95+
- Versión inicial.
8096

8197
== License ==
8298

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

Comments
 (0)